@@ -89,7 +89,7 @@ data GhciOpts = GhciOpts
8989 , ghciLoadLocalDeps :: ! Bool
9090 , ghciSkipIntermediate :: ! Bool
9191 , ghciHidePackages :: ! Bool
92- , ghciBuildOptsCLI :: ! BuildOptsCLI
92+ , ghciTargets :: ! [ Text ]
9393 , ghciNoBuild :: ! Bool
9494 } deriving Show
9595
@@ -136,12 +136,12 @@ instance Show GhciException where
136136ghci :: M r m => GhciOpts -> m ()
137137ghci opts@ GhciOpts {.. } = do
138138 -- Load source map, without explicit targets, to collect all info.
139- (_, _, locals, _, sourceMap) <- loadSourceMap AllowNoTargets ghciBuildOptsCLI
139+ (_, _, locals, _, sourceMap) <- loadSourceMap AllowNoTargets defaultBuildOptsCLI
140140 { boptsCLITargets = [] }
141141 -- Parse --main-is argument.
142- mainIsTargets <- parseMainIsTargets ghciBuildOptsCLI ghciMainIs
142+ mainIsTargets <- parseMainIsTargets ghciMainIs
143143 -- Parse to either file targets or build targets
144- etargets <- preprocessTargets ghciBuildOptsCLI
144+ etargets <- preprocessTargets ghciTargets
145145 (inputTargets, mfileTargets) <- case etargets of
146146 Left rawFileTargets -> do
147147 case mainIsTargets of
@@ -151,7 +151,7 @@ ghci opts@GhciOpts{..} = do
151151 (targetMap, fileInfo, extraFiles) <- findFileTargets locals rawFileTargets
152152 return (targetMap, Just (fileInfo, extraFiles))
153153 Right rawTargets -> do
154- (_,_,normalTargets) <- parseTargetsFromBuildOpts AllowNoTargets ghciBuildOptsCLI
154+ (_,_,normalTargets) <- parseTargetsFromBuildOpts AllowNoTargets defaultBuildOptsCLI
155155 { boptsCLITargets = rawTargets }
156156 return (normalTargets, Nothing )
157157 -- Make sure the targets are known.
@@ -163,16 +163,16 @@ ghci opts@GhciOpts{..} = do
163163 -- Build required dependencies and setup local packages.
164164 buildDepsAndInitialSteps opts (map (packageNameText . fst ) localTargets)
165165 -- Load the list of modules _after_ building, to catch changes in unlisted dependencies (#1180)
166- pkgs <- getGhciPkgInfos ghciBuildOptsCLI sourceMap addPkgs (fmap fst mfileTargets) localTargets
166+ pkgs <- getGhciPkgInfos sourceMap addPkgs (fmap fst mfileTargets) localTargets
167167 checkForIssues pkgs
168168 -- Finally, do the invocation of ghci
169169 runGhci opts localTargets mainIsTargets pkgs
170170
171- preprocessTargets :: M r m => BuildOptsCLI -> m (Either [Path Abs File ] [Text ])
172- preprocessTargets boptsCLI = do
171+ preprocessTargets :: M r m => [ Text ] -> m (Either [Path Abs File ] [Text ])
172+ preprocessTargets rawTargets = do
173173 let (fileTargetsRaw, normalTargets) =
174174 partition (\ t -> " .hs" `T.isSuffixOf` t || " .lhs" `T.isSuffixOf` t)
175- (boptsCLITargets boptsCLI)
175+ rawTargets
176176 fileTargets <- forM fileTargetsRaw $ \ fp0 -> do
177177 let fp = T. unpack fp0
178178 mpath <- forgivingAbsence (resolveFile' fp)
@@ -184,9 +184,9 @@ preprocessTargets boptsCLI = do
184184 (False , _) -> return (Left fileTargets)
185185 _ -> return (Right normalTargets)
186186
187- parseMainIsTargets :: M env m => BuildOptsCLI -> Maybe Text -> m (Maybe (Map PackageName SimpleTarget ))
188- parseMainIsTargets boptsCli mtarget = forM mtarget $ \ target -> do
189- (_,_,targets) <- parseTargetsFromBuildOpts AllowNoTargets boptsCli
187+ parseMainIsTargets :: M env m => Maybe Text -> m (Maybe (Map PackageName SimpleTarget ))
188+ parseMainIsTargets mtarget = forM mtarget $ \ target -> do
189+ (_,_,targets) <- parseTargetsFromBuildOpts AllowNoTargets defaultBuildOptsCLI
190190 { boptsCLITargets = [target] }
191191 return targets
192192
@@ -306,7 +306,7 @@ buildDepsAndInitialSteps GhciOpts{..} targets0 = do
306306 -- If necessary, do the build, for local packagee targets, only do
307307 -- 'initialBuildSteps'.
308308 when (not ghciNoBuild && not (null targets)) $ do
309- eres <- tryAny $ build (const (return () )) Nothing ghciBuildOptsCLI
309+ eres <- tryAny $ build (const (return () )) Nothing defaultBuildOptsCLI
310310 { boptsCLITargets = targets
311311 , boptsCLIInitialBuildSteps = True
312312 }
@@ -341,7 +341,6 @@ runGhci GhciOpts{..} targets mainIsTargets pkgs = do
341341 genOpts = nubOrd (concatMap (concatMap (oneWordOpts . snd ) . ghciPkgOpts) pkgs)
342342 (omittedOpts, ghcOpts) = partition badForGhci $
343343 concatMap (concatMap (bioOpts . snd ) . ghciPkgOpts) pkgs ++
344- map T. unpack (boptsCLIGhcOptions ghciBuildOptsCLI) ++
345344 getUserOptions Nothing ++
346345 concatMap (getUserOptions . Just . ghciPkgName) pkgs
347346 getUserOptions mpkg =
@@ -530,13 +529,12 @@ figureOutMainFile bopts mainIsTargets targets0 packages = do
530529
531530getGhciPkgInfos
532531 :: M env m
533- => BuildOptsCLI
534- -> SourceMap
532+ => SourceMap
535533 -> [PackageName ]
536534 -> Maybe (Map PackageName (Set (Path Abs File )))
537535 -> [(PackageName , (Path Abs File , SimpleTarget ))]
538536 -> m [GhciPkgInfo ]
539- getGhciPkgInfos boptsCli sourceMap addPkgs mfileTargets localTargets = do
537+ getGhciPkgInfos sourceMap addPkgs mfileTargets localTargets = do
540538 menv <- getMinimalEnvOverride
541539 (installedMap, _, _, _) <- getInstalled
542540 menv
@@ -547,13 +545,12 @@ getGhciPkgInfos boptsCli sourceMap addPkgs mfileTargets localTargets = do
547545 sourceMap
548546 let localLibs = [name | (name, (_, target)) <- localTargets, hasLocalComp isCLib target]
549547 forM localTargets $ \ (name, (cabalfp, target)) ->
550- makeGhciPkgInfo boptsCli sourceMap installedMap localLibs addPkgs mfileTargets name cabalfp target
548+ makeGhciPkgInfo sourceMap installedMap localLibs addPkgs mfileTargets name cabalfp target
551549
552550-- | Make information necessary to load the given package in GHCi.
553551makeGhciPkgInfo
554552 :: (MonadReader r m , HasEnvConfig r , HasTerminal r , MonadLogger m , MonadIO m , MonadCatch m , MonadBaseControl IO m )
555- => BuildOptsCLI
556- -> SourceMap
553+ => SourceMap
557554 -> InstalledMap
558555 -> [PackageName ]
559556 -> [PackageName ]
@@ -562,16 +559,16 @@ makeGhciPkgInfo
562559 -> Path Abs File
563560 -> SimpleTarget
564561 -> m GhciPkgInfo
565- makeGhciPkgInfo boptsCli sourceMap installedMap locals addPkgs mfileTargets name cabalfp target = do
562+ makeGhciPkgInfo sourceMap installedMap locals addPkgs mfileTargets name cabalfp target = do
566563 bopts <- asks (configBuild . getConfig)
567564 econfig <- asks getEnvConfig
568565 bconfig <- asks getBuildConfig
569566 let config =
570567 PackageConfig
571568 { packageConfigEnableTests = True
572569 , packageConfigEnableBenchmarks = True
573- , packageConfigFlags = getLocalFlags bconfig boptsCli name
574- , packageConfigGhcOptions = getGhcOptions bconfig boptsCli name True True
570+ , packageConfigFlags = getLocalFlags bconfig defaultBuildOptsCLI name
571+ , packageConfigGhcOptions = getGhcOptions bconfig defaultBuildOptsCLI name True True
575572 , packageConfigCompilerVersion = envConfigCompilerVersion econfig
576573 , packageConfigPlatform = configPlatform (getConfig bconfig)
577574 }
0 commit comments