Skip to content

Commit 36a186a

Browse files
committed
Refactor showBuildTarget to not require QualLevel, making it total.
Signed-off-by: Edward Z. Yang <[email protected]>
1 parent 5c410b3 commit 36a186a

File tree

4 files changed

+31
-21
lines changed

4 files changed

+31
-21
lines changed

Cabal/Distribution/Simple/BuildTarget.hs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,10 +233,21 @@ showUserBuildTarget = intercalate ":" . getComponents
233233
getComponents (UserBuildTargetDouble s1 s2) = [s1,s2]
234234
getComponents (UserBuildTargetTriple s1 s2 s3) = [s1,s2,s3]
235235

236-
showBuildTarget :: QualLevel -> PackageId -> BuildTarget -> String
237-
showBuildTarget ql pkgid bt =
236+
-- | Unless you use 'QL1', this function is PARTIAL;
237+
-- use 'showBuildTarget' instead.
238+
showBuildTarget' :: QualLevel -> PackageId -> BuildTarget -> String
239+
showBuildTarget' ql pkgid bt =
238240
showUserBuildTarget (renderBuildTarget ql bt pkgid)
239241

242+
-- | Unambiguously render a 'BuildTarget', so that it can
243+
-- be parsed in all situations.
244+
showBuildTarget :: PackageId -> BuildTarget -> String
245+
showBuildTarget pkgid t =
246+
showBuildTarget' (qlBuildTarget t) pkgid t
247+
where
248+
qlBuildTarget BuildTargetComponent{} = QL2
249+
qlBuildTarget _ = QL3
250+
240251

241252
-- ------------------------------------------------------------
242253
-- * Resolving user targets to build targets

cabal-install/Distribution/Client/BuildTarget.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ module Distribution.Client.BuildTarget (
1313

1414
-- * Build targets
1515
BuildTarget(..),
16+
-- Don't export me: it's partial (if you try to qualify too
17+
-- much you will error.)
1618
--showBuildTarget,
1719
QualLevel(..),
1820
buildTargetPackage,

cabal-install/Distribution/Client/ProjectPlanning.hs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ import qualified Distribution.Simple.LocalBuildInfo as Cabal
103103
import Distribution.Simple.LocalBuildInfo (ComponentName(..))
104104
import qualified Distribution.Simple.Register as Cabal
105105
import qualified Distribution.Simple.InstallDirs as InstallDirs
106-
import qualified Distribution.Simple.BuildTarget as Cabal
107106

108107
import Distribution.Simple.Utils hiding (matchFileGlob)
109108
import Distribution.Version
@@ -2200,24 +2199,6 @@ setupHsBuildArgs (ElabPackage pkg) = map (showComponentTarget (packageId pkg)) (
22002199
setupHsBuildArgs (ElabComponent _comp) = []
22012200

22022201

2203-
showComponentTarget :: PackageId -> ComponentTarget -> String
2204-
showComponentTarget pkgid =
2205-
showBuildTarget . toBuildTarget
2206-
where
2207-
showBuildTarget t =
2208-
Cabal.showBuildTarget (qlBuildTarget t) pkgid t
2209-
2210-
qlBuildTarget Cabal.BuildTargetComponent{} = Cabal.QL2
2211-
qlBuildTarget _ = Cabal.QL3
2212-
2213-
toBuildTarget :: ComponentTarget -> Cabal.BuildTarget
2214-
toBuildTarget (ComponentTarget cname subtarget) =
2215-
case subtarget of
2216-
WholeComponent -> Cabal.BuildTargetComponent cname
2217-
ModuleTarget mname -> Cabal.BuildTargetModule cname mname
2218-
FileTarget fname -> Cabal.BuildTargetFile cname fname
2219-
2220-
22212202
setupHsReplFlags :: ElaboratedConfiguredPackage
22222203
-> ElaboratedSharedConfig
22232204
-> Verbosity

cabal-install/Distribution/Client/ProjectPlanning/Types.hs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ module Distribution.Client.ProjectPlanning.Types (
3232
-- * Build targets
3333
PackageTarget(..),
3434
ComponentTarget(..),
35+
showComponentTarget,
3536
SubComponentTarget(..),
3637

3738
-- * Setup script
@@ -54,6 +55,7 @@ import Distribution.System
5455
import qualified Distribution.PackageDescription as Cabal
5556
import Distribution.InstalledPackageInfo (InstalledPackageInfo)
5657
import Distribution.Simple.Compiler
58+
import qualified Distribution.Simple.BuildTarget as Cabal
5759
import Distribution.Simple.Program.Db
5860
import Distribution.ModuleName (ModuleName)
5961
import Distribution.Simple.LocalBuildInfo (ComponentName(..))
@@ -461,6 +463,20 @@ instance Binary PackageTarget
461463
instance Binary ComponentTarget
462464
instance Binary SubComponentTarget
463465

466+
-- | Unambiguously render a 'ComponentTarget', e.g., to pass
467+
-- to a Cabal Setup script.
468+
showComponentTarget :: PackageId -> ComponentTarget -> String
469+
showComponentTarget pkgid =
470+
Cabal.showBuildTarget pkgid . toBuildTarget
471+
where
472+
toBuildTarget :: ComponentTarget -> Cabal.BuildTarget
473+
toBuildTarget (ComponentTarget cname subtarget) =
474+
case subtarget of
475+
WholeComponent -> Cabal.BuildTargetComponent cname
476+
ModuleTarget mname -> Cabal.BuildTargetModule cname mname
477+
FileTarget fname -> Cabal.BuildTargetFile cname fname
478+
479+
464480

465481
---------------------------
466482
-- Setup.hs script policy

0 commit comments

Comments
 (0)