Skip to content

Commit 0eeaea7

Browse files
committed
Move to numeric render
1 parent c94287f commit 0eeaea7

29 files changed

Lines changed: 319 additions & 317 deletions

File tree

Cabal-QuickCheck/src/Test/QuickCheck/Instances/Cabal.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ import Distribution.Types.VersionRange.Internal
4141
import Distribution.Utils.NubList
4242
import Distribution.Verbosity
4343
import Distribution.Version
44+
import Distribution.Types.DebugInfoLevel (DebugInfoLevel)
45+
import Distribution.Types.OptimisationLevel (OptimisationLevel)
4446

4547
import Test.QuickCheck.GenericArbitrary
4648

Cabal-tree-diff/src/Data/TreeDiff/Instances/Cabal.hs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,22 @@ import Distribution.Compiler (CompilerFlavor, CompilerId,
1818
import Distribution.InstalledPackageInfo (AbiDependency, ExposedModule, InstalledPackageInfo)
1919
import Distribution.ModuleName (ModuleName)
2020
import Distribution.PackageDescription
21-
import Distribution.Simple.Compiler (DebugInfoLevel, OptimisationLevel, ProfDetailLevel)
21+
import Distribution.Simple.Compiler (ProfDetailLevel)
2222
import Distribution.Simple.InstallDirs
23-
import Distribution.Simple.InstallDirs.Internal
23+
import Distribution.Simple.InstallDirs.Internal (PathComponent)
2424
import Distribution.Simple.Setup (HaddockTarget, TestShowDetails)
25-
import Distribution.System
25+
import Distribution.System (OS, Arch)
2626
import Distribution.Types.AbiHash (AbiHash)
2727
import Distribution.Types.ComponentId (ComponentId)
2828
import Distribution.Types.DumpBuildInfo (DumpBuildInfo)
29-
import Distribution.Types.PackageVersionConstraint
29+
import Distribution.Types.PackageVersionConstraint (PackageVersionConstraint)
3030
import Distribution.Types.UnitId (DefUnitId, UnitId)
3131
import Distribution.Utils.NubList (NubList)
3232
import Distribution.Utils.Path (SymbolicPathX)
33-
import Distribution.Verbosity
34-
import Distribution.Verbosity.Internal
33+
import Distribution.Verbosity (VerbosityLevel, VerbosityFlags)
34+
import Distribution.Verbosity.Internal (VerbosityFlag)
35+
import Distribution.Types.DebugInfoLevel (DebugInfoLevel)
36+
import Distribution.Types.OptimisationLevel (OptimisationLevel)
3537

3638
import qualified Distribution.Compat.NonEmptySet as NES
3739

Cabal/Cabal.cabal

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,11 +170,13 @@ library
170170
Distribution.TestSuite
171171
Distribution.Types.AnnotatedId
172172
Distribution.Types.ComponentInclude
173+
Distribution.Types.DebugInfoLevel
173174
Distribution.Types.DumpBuildInfo
174175
Distribution.Types.PackageName.Magic
175176
Distribution.Types.ComponentLocalBuildInfo
176177
Distribution.Types.LocalBuildConfig
177178
Distribution.Types.LocalBuildInfo
179+
Distribution.Types.OptimisationLevel
178180
Distribution.Types.TargetInfo
179181
Distribution.Types.GivenComponent
180182
Distribution.Types.ParStrat

Cabal/src/Distribution/Simple/Build.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ dumpBuildInfo verbosity distPref dumpBuildInfoFlag pkg_descr lbi flags = do
309309
removeFileForcibly buildInfoFile
310310
where
311311
buildInfoFile = interpretSymbolicPathLBI lbi $ buildInfoPref distPref
312-
shouldDumpBuildInfo = fromFlagOrDefault NoDumpBuildInfo dumpBuildInfoFlag == DumpBuildInfo
312+
shouldDumpBuildInfo = fromNoFlag dumpBuildInfoFlag == DumpBuildInfo
313313

314314
-- \| Given the flavor of the compiler, try to find out
315315
-- which program we need.

Cabal/src/Distribution/Simple/Command.hs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ module Distribution.Simple.Command
7979
, reqArg'
8080
, optArg
8181
, optArg'
82-
, optArgDef'
8382
, noArg
8483
, boolOpt
8584
, boolOpt'
@@ -280,15 +279,6 @@ optArg'
280279
optArg' ad mkflag showflag =
281280
optArg ad (succeedReadE (mkflag . Just)) ("", mkflag Nothing) showflag
282281

283-
optArgDef'
284-
:: Monoid b
285-
=> ArgPlaceHolder
286-
-> (String, Maybe String -> b)
287-
-> (b -> [Maybe String])
288-
-> MkOptDescr (a -> b) (b -> a -> a) a
289-
optArgDef' ad (dv, mkflag) showflag =
290-
optArg ad (succeedReadE (mkflag . Just)) (dv, mkflag Nothing) showflag
291-
292282
noArg :: Eq b => b -> MkOptDescr (a -> b) (b -> a -> a) a
293283
noArg flag sf lf d = choiceOpt [(flag, (sf, lf), d)] sf lf d
294284

Cabal/src/Distribution/Simple/Compiler.hs

Lines changed: 16 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,6 @@ module Distribution.Simple.Compiler
5252
, coercePackageDBStack
5353
, readPackageDb
5454

55-
-- * Support for optimisation levels
56-
, OptimisationLevel (..)
57-
, flagToOptimisationLevel
58-
59-
-- * Support for debug info levels
60-
, DebugInfoLevel (..)
61-
, flagToDebugInfoLevel
62-
6355
-- * Support for language extensions
6456
, CompilerFlag
6557
, languageToFlags
@@ -96,22 +88,30 @@ module Distribution.Simple.Compiler
9688
, showProfDetailLevel
9789
) where
9890

99-
import Distribution.Compat.CharParsing
10091
import Distribution.Compat.Prelude
101-
import Distribution.Parsec
102-
import Distribution.Pretty
92+
import Distribution.Parsec (CabalParsing, Parsec (..), parsecToken)
93+
import Distribution.Pretty (prettyShow)
10394
import Prelude ()
10495

10596
import Distribution.Compiler
10697
import Distribution.Package (PackageName)
107-
import Distribution.Simple.Utils
98+
import Distribution.Simple.Utils (lowercase, safeLast)
10899
import Distribution.Types.UnitId (UnitId)
109100
import Distribution.Utils.Path
110-
import Distribution.Version
111-
112-
import Language.Haskell.Extension
101+
( CWD
102+
, FileOrDir (..)
103+
, Pkg
104+
, PkgDB
105+
, SymbolicPath
106+
, getSymbolicPath
107+
, interpretSymbolicPath
108+
, makeSymbolicPath
109+
, symbolicPathRelative_maybe
110+
)
111+
import Distribution.Version (Version, mkVersion)
112+
113+
import Language.Haskell.Extension (Extension, Language (..))
113114

114-
import Data.Bool (bool)
115115
import qualified Data.Map as Map (lookup)
116116
import System.Directory (canonicalizePath)
117117

@@ -304,95 +304,6 @@ coercePackageDBStack = map coercePackageDB
304304

305305
-- ------------------------------------------------------------
306306

307-
-- * Optimisation levels
308-
309-
-- ------------------------------------------------------------
310-
311-
-- | Some compilers support optimising. Some have different levels.
312-
-- For compilers that do not the level is just capped to the level
313-
-- they do support.
314-
data OptimisationLevel
315-
= NoOptimisation
316-
| NormalOptimisation
317-
| MaximumOptimisation
318-
deriving (Bounded, Enum, Eq, Generic, Read, Show)
319-
320-
instance Binary OptimisationLevel
321-
instance NFData OptimisationLevel
322-
instance Structured OptimisationLevel
323-
324-
instance Parsec OptimisationLevel where
325-
parsec = parsecOptimisationLevel
326-
327-
parsecOptimisationLevel :: CabalParsing m => m OptimisationLevel
328-
parsecOptimisationLevel = boolParser <|> intParser
329-
where
330-
boolParser = bool NoOptimisation NormalOptimisation <$> parsec
331-
intParser = intToOptimisationLevel <$> integral
332-
333-
flagToOptimisationLevel :: Maybe String -> OptimisationLevel
334-
flagToOptimisationLevel Nothing = NormalOptimisation
335-
flagToOptimisationLevel (Just s) = case reads s of
336-
[(i, "")] -> intToOptimisationLevel i
337-
_ -> error $ "Can't parse optimisation level " ++ s
338-
339-
intToOptimisationLevel :: Int -> OptimisationLevel
340-
intToOptimisationLevel i
341-
| i >= minLevel && i <= maxLevel = toEnum i
342-
| otherwise =
343-
error $
344-
"Bad optimisation level: "
345-
++ show i
346-
++ ". Valid values are "
347-
++ show minLevel
348-
++ ".."
349-
++ show maxLevel
350-
where
351-
minLevel = fromEnum (minBound :: OptimisationLevel)
352-
maxLevel = fromEnum (maxBound :: OptimisationLevel)
353-
354-
-- ------------------------------------------------------------
355-
356-
-- * Debug info levels
357-
358-
-- ------------------------------------------------------------
359-
360-
-- | Some compilers support emitting debug info. Some have different
361-
-- levels. For compilers that do not the level is just capped to the
362-
-- level they do support.
363-
data DebugInfoLevel
364-
= NoDebugInfo
365-
| MinimalDebugInfo
366-
| NormalDebugInfo
367-
| MaximalDebugInfo
368-
deriving (Bounded, Enum, Eq, Generic, Read, Show)
369-
370-
instance Binary DebugInfoLevel
371-
instance NFData DebugInfoLevel
372-
instance Structured DebugInfoLevel
373-
374-
instance Parsec DebugInfoLevel where
375-
parsec = parsecDebugInfoLevel
376-
377-
parsecDebugInfoLevel :: CabalParsing m => m DebugInfoLevel
378-
parsecDebugInfoLevel = flagToDebugInfoLevel . pure <$> parsecToken
379-
380-
flagToDebugInfoLevel :: Maybe String -> DebugInfoLevel
381-
flagToDebugInfoLevel Nothing = NormalDebugInfo
382-
flagToDebugInfoLevel (Just s) = case reads s of
383-
[(i, "")]
384-
| i >= fromEnum (minBound :: DebugInfoLevel)
385-
&& i <= fromEnum (maxBound :: DebugInfoLevel) ->
386-
toEnum i
387-
| otherwise ->
388-
error $
389-
"Bad debug info level: "
390-
++ show i
391-
++ ". Valid values are 0..3"
392-
_ -> error $ "Can't parse debug info level " ++ s
393-
394-
-- ------------------------------------------------------------
395-
396307
-- * Languages and Extensions
397308

398309
-- ------------------------------------------------------------

Cabal/src/Distribution/Simple/Configure.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ import Distribution.Pretty
164164
)
165165
import Distribution.Simple.Errors
166166
import Distribution.Types.AnnotatedId
167+
import Distribution.Types.DebugInfoLevel (DebugInfoLevel (..))
167168
import Distribution.Utils.Path
168169
import Distribution.Utils.Structured (structuredDecodeOrFailIO, structuredEncode)
169170
import System.Directory

Cabal/src/Distribution/Simple/Flag.hs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ module Distribution.Simple.Flag
3131
, maybeToFlag
3232
, mergeListFlag
3333
, BooleanFlag (..)
34+
, NoFlagValue (..)
35+
, fromNoFlag
3436
) where
3537

3638
import Data.Monoid (Last (..))
@@ -123,3 +125,15 @@ class BooleanFlag a where
123125

124126
instance BooleanFlag Bool where
125127
asBool = id
128+
129+
-- | Flag is a Monoid, with 'NoFlag' as the identity element, and 'Flag' as the binary operation.
130+
--
131+
-- @since 3.18.0.0
132+
class NoFlagValue a where
133+
noFlagValue :: a
134+
135+
-- | Extracts a value from a 'Flag', and returns the 'noFlagValue' on 'NoFlag'.
136+
--
137+
-- @since 3.18.0.0
138+
fromNoFlag :: NoFlagValue a => Flag a -> a
139+
fromNoFlag = fromFlagOrDefault noFlagValue

Cabal/src/Distribution/Simple/GHC/Internal.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,13 @@ import Distribution.Simple.Utils
7676
import Distribution.System
7777
import Distribution.Types.BuildInfo
7878
import Distribution.Types.ComponentLocalBuildInfo
79+
import Distribution.Types.DebugInfoLevel (DebugInfoLevel (..))
7980
import Distribution.Types.GivenComponent
8081
import qualified Distribution.Types.InstalledPackageInfo as IPI
8182
import Distribution.Types.Library
8283
import Distribution.Types.LocalBuildInfo
8384
import Distribution.Types.ModuleRenaming
85+
import Distribution.Types.OptimisationLevel (OptimisationLevel (..))
8486
import Distribution.Types.PackageName
8587
import Distribution.Types.TargetInfo
8688
import Distribution.Types.UnitId

Cabal/src/Distribution/Simple/Program/GHC.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,13 @@ import Distribution.Verbosity
4848
import Distribution.Version
4949

5050
import GHC.IO.Encoding (TextEncoding)
51-
import Language.Haskell.Extension
51+
import Language.Haskell.Extension (Extension, Language)
5252

5353
import Data.List (stripPrefix)
5454
import qualified Data.Map as Map
5555
import Data.Monoid (All (..), Any (..), Endo (..))
5656
import qualified Data.Set as Set
57+
import Distribution.Types.DebugInfoLevel (DebugInfoLevel (..))
5758
import qualified System.Process as Process
5859

5960
normaliseGhcArgs :: Maybe Version -> PackageDescription -> [String] -> [String]

0 commit comments

Comments
 (0)