cabal-install
Safe HaskellNone
LanguageHaskell2010

Distribution.Client.Compat.Prelude

Description

This module does two things:

  • Acts as a compatibility layer, like base-compat.
  • Provides commonly used imports.

This module is a superset of Distribution.Compat.Prelude (which this module re-exports)

Synopsis

Documentation

explicitEitherParsec :: ParsecParser a -> String -> Either String a #

Parse a String with given ParsecParser. Trailing whitespace is accepted.

simpleParsec :: Parsec a => String -> Maybe a #

Parse a String with lexemeParsec.

prettyShow :: Pretty a => a -> String #

data Verbosity #

Instances

Instances details
Parsec Verbosity #

Parser verbosity

>>> explicitEitherParsec parsecVerbosity "normal"
Right (Verbosity {vLevel = Normal, vFlags = fromList [], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal+nowrap  "
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal+nowrap +markoutput"
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal +nowrap +markoutput"
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal+nowrap+markoutput"
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "deafening+nowrap+stdout+stderr+callsite+callstack"
Right (Verbosity {vLevel = Deafening, vFlags = fromList [VCallStack,VCallSite,VNoWrap,VStderr], vQuiet = False})

Note: this parser will eat trailing spaces.

Instance details

Defined in Distribution.Verbosity

Methods

parsec :: CabalParsing m => m Verbosity #

Pretty Verbosity # 
Instance details

Defined in Distribution.Verbosity

Structured Verbosity # 
Instance details

Defined in Distribution.Verbosity

Binary Verbosity # 
Instance details

Defined in Distribution.Verbosity

Bounded Verbosity # 
Instance details

Defined in Distribution.Verbosity

Enum Verbosity # 
Instance details

Defined in Distribution.Verbosity

Generic Verbosity # 
Instance details

Defined in Distribution.Verbosity

Associated Types

type Rep Verbosity 
Instance details

Defined in Distribution.Verbosity

type Rep Verbosity = D1 ('MetaData "Verbosity" "Distribution.Verbosity" "Cabal-3.16.1.0-inplace" 'False) (C1 ('MetaCons "Verbosity" 'PrefixI 'True) (S1 ('MetaSel ('Just "vLevel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 VerbosityLevel) :*: (S1 ('MetaSel ('Just "vFlags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set VerbosityFlag)) :*: S1 ('MetaSel ('Just "vQuiet") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))
Read Verbosity # 
Instance details

Defined in Distribution.Verbosity

Show Verbosity # 
Instance details

Defined in Distribution.Verbosity

Eq Verbosity # 
Instance details

Defined in Distribution.Verbosity

Ord Verbosity # 
Instance details

Defined in Distribution.Verbosity

type Rep Verbosity # 
Instance details

Defined in Distribution.Verbosity

type Rep Verbosity = D1 ('MetaData "Verbosity" "Distribution.Verbosity" "Cabal-3.16.1.0-inplace" 'False) (C1 ('MetaCons "Verbosity" 'PrefixI 'True) (S1 ('MetaSel ('Just "vLevel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 VerbosityLevel) :*: (S1 ('MetaSel ('Just "vFlags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set VerbosityFlag)) :*: S1 ('MetaSel ('Just "vQuiet") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))

class (CharParsing m, MonadPlus m, MonadFail m) => CabalParsing (m :: Type -> Type) #

Parsing class which

  • can report Cabal parser warnings.
  • knows cabal-version we work with

Minimal complete definition

parsecWarning, askCabalSpecVersion

class Parsec a where #

Class for parsing with parsec. Mainly used for .cabal file fields.

For parsing .cabal like file structure, see Distribution.Fields.

Methods

parsec :: CabalParsing m => m a #

Instances

Instances details
Parsec FilePathRoot # 
Instance details

Defined in Distribution.Simple.FileMonitor.Types

Parsec RootedGlob # 
Instance details

Defined in Distribution.Simple.FileMonitor.Types

Methods

parsec :: CabalParsing m => m RootedGlob #

Parsec Glob # 
Instance details

Defined in Distribution.Simple.Glob.Internal

Methods

parsec :: CabalParsing m => m Glob #

Parsec HaddockTarget # 
Instance details

Defined in Distribution.Simple.Setup.Haddock

Parsec TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup.Test

Parsec Verbosity #

Parser verbosity

>>> explicitEitherParsec parsecVerbosity "normal"
Right (Verbosity {vLevel = Normal, vFlags = fromList [], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal+nowrap  "
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal+nowrap +markoutput"
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal +nowrap +markoutput"
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal+nowrap+markoutput"
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "deafening+nowrap+stdout+stderr+callsite+callstack"
Right (Verbosity {vLevel = Deafening, vFlags = fromList [VCallStack,VCallSite,VNoWrap,VStderr], vQuiet = False})

Note: this parser will eat trailing spaces.

Instance details

Defined in Distribution.Verbosity

Methods

parsec :: CabalParsing m => m Verbosity #

Parsec OpenModule #
>>> eitherParsec "Includes2-0.1.0.0-inplace-mysql:Database.MySQL" :: Either String OpenModule
Right (OpenModule (DefiniteUnitId (DefUnitId {unDefUnitId = UnitId "Includes2-0.1.0.0-inplace-mysql"})) (ModuleName "Database.MySQL"))
Instance details

Defined in Distribution.Backpack

Methods

parsec :: CabalParsing m => m OpenModule #

Parsec OpenUnitId #
>>> eitherParsec "foobar" :: Either String OpenUnitId
Right (DefiniteUnitId (DefUnitId {unDefUnitId = UnitId "foobar"}))
>>> eitherParsec "foo[Str=text-1.2.3:Data.Text.Text]" :: Either String OpenUnitId
Right (IndefFullUnitId (ComponentId "foo") (fromList [(ModuleName "Str",OpenModule (DefiniteUnitId (DefUnitId {unDefUnitId = UnitId "text-1.2.3"})) (ModuleName "Data.Text.Text"))]))
Instance details

Defined in Distribution.Backpack

Methods

parsec :: CabalParsing m => m OpenUnitId #

Parsec AbiTag # 
Instance details

Defined in Distribution.Compiler

Methods

parsec :: CabalParsing m => m AbiTag #

Parsec CompilerFlavor # 
Instance details

Defined in Distribution.Compiler

Parsec CompilerId # 
Instance details

Defined in Distribution.Compiler

Methods

parsec :: CabalParsing m => m CompilerId #

Parsec FilePathNT # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m FilePathNT #

Parsec SpecLicense # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m SpecLicense #

Parsec SpecVersion # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m SpecVersion #

Parsec TestedWith # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m TestedWith #

Parsec Token # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m Token #

Parsec Token' # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m Token' #

Parsec License # 
Instance details

Defined in Distribution.License

Methods

parsec :: CabalParsing m => m License #

Parsec ModuleName # 
Instance details

Defined in Distribution.ModuleName

Methods

parsec :: CabalParsing m => m ModuleName #

Parsec CompatDataDir # 
Instance details

Defined in Distribution.PackageDescription.FieldGrammar

Parsec CompatLicenseFile # 
Instance details

Defined in Distribution.PackageDescription.FieldGrammar

Parsec License #
>>> eitherParsec "BSD-3-Clause AND MIT" :: Either String License
Right (License (EAnd (ELicense (ELicenseId BSD_3_Clause) Nothing) (ELicense (ELicenseId MIT) Nothing)))
>>> eitherParsec "NONE" :: Either String License
Right NONE
Instance details

Defined in Distribution.SPDX.License

Methods

parsec :: CabalParsing m => m License #

Parsec LicenseExceptionId # 
Instance details

Defined in Distribution.SPDX.LicenseExceptionId

Parsec LicenseExpression # 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Parsec SimpleLicenseExpression # 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Parsec LicenseId #
>>> eitherParsec "BSD-3-Clause" :: Either String LicenseId
Right BSD_3_Clause
>>> eitherParsec "BSD3" :: Either String LicenseId
Left "...Unknown SPDX license identifier: 'BSD3' Do you mean BSD-3-Clause?"
Instance details

Defined in Distribution.SPDX.LicenseId

Methods

parsec :: CabalParsing m => m LicenseId #

Parsec LicenseRef # 
Instance details

Defined in Distribution.SPDX.LicenseReference

Methods

parsec :: CabalParsing m => m LicenseRef #

Parsec Arch # 
Instance details

Defined in Distribution.System

Methods

parsec :: CabalParsing m => m Arch #

Parsec OS # 
Instance details

Defined in Distribution.System

Methods

parsec :: CabalParsing m => m OS #

Parsec Platform # 
Instance details

Defined in Distribution.System

Methods

parsec :: CabalParsing m => m Platform #

Parsec AbiDependency # 
Instance details

Defined in Distribution.Types.AbiDependency

Parsec AbiHash # 
Instance details

Defined in Distribution.Types.AbiHash

Methods

parsec :: CabalParsing m => m AbiHash #

Parsec BenchmarkType # 
Instance details

Defined in Distribution.Types.BenchmarkType

Parsec BuildType # 
Instance details

Defined in Distribution.Types.BuildType

Methods

parsec :: CabalParsing m => m BuildType #

Parsec ComponentId # 
Instance details

Defined in Distribution.Types.ComponentId

Methods

parsec :: CabalParsing m => m ComponentId #

Parsec ComponentName # 
Instance details

Defined in Distribution.Types.ComponentName

Parsec Dependency #
>>> simpleParsec "mylib:sub" :: Maybe Dependency
Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub") :| [])))
>>> simpleParsec "mylib:{sub1,sub2}" :: Maybe Dependency
Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub1") :| [LSubLibName (UnqualComponentName "sub2")])))
>>> simpleParsec "mylib:{ sub1 , sub2 }" :: Maybe Dependency
Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub1") :| [LSubLibName (UnqualComponentName "sub2")])))
>>> simpleParsec "mylib:{ sub1 , sub2 } ^>= 42" :: Maybe Dependency
Just (Dependency (PackageName "mylib") (MajorBoundVersion (mkVersion [42])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub1") :| [LSubLibName (UnqualComponentName "sub2")])))
>>> simpleParsec "mylib:{ } ^>= 42" :: Maybe Dependency
Nothing
>>> traverse_ print (map simpleParsec ["mylib:mylib", "mylib:{mylib}", "mylib:{mylib,sublib}" ] :: [Maybe Dependency])
Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LMainLibName :| [])))
Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LMainLibName :| [])))
Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LMainLibName :| [LSubLibName (UnqualComponentName "sublib")])))

Spaces around colon are not allowed:

>>> map simpleParsec ["mylib: sub", "mylib :sub", "mylib: {sub1,sub2}", "mylib :{sub1,sub2}"] :: [Maybe Dependency]
[Nothing,Nothing,Nothing,Nothing]

Sublibrary syntax is accepted since cabal-version: 3.0

>>> map (`simpleParsec'` "mylib:sub") [CabalSpecV2_4, CabalSpecV3_0] :: [Maybe Dependency]
[Nothing,Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub") :| [])))]
Instance details

Defined in Distribution.Types.Dependency

Methods

parsec :: CabalParsing m => m Dependency #

Parsec ExeDependency #

Examples

>>> simpleParsec "happy:happy" :: Maybe ExeDependency
Just (ExeDependency (PackageName "happy") (UnqualComponentName "happy") (OrLaterVersion (mkVersion [0])))
>>> simpleParsec "happy:happy >= 1.19.12" :: Maybe ExeDependency
Just (ExeDependency (PackageName "happy") (UnqualComponentName "happy") (OrLaterVersion (mkVersion [1,19,12])))
>>> simpleParsec "happy:happy>=1.19.12" :: Maybe ExeDependency
Just (ExeDependency (PackageName "happy") (UnqualComponentName "happy") (OrLaterVersion (mkVersion [1,19,12])))
>>> simpleParsec "happy : happy >= 1.19.12" :: Maybe ExeDependency
Nothing
>>> simpleParsec "happy: happy >= 1.19.12" :: Maybe ExeDependency
Nothing
>>> simpleParsec "happy :happy >= 1.19.12" :: Maybe ExeDependency
Nothing
Instance details

Defined in Distribution.Types.ExeDependency

Parsec ExecutableScope # 
Instance details

Defined in Distribution.Types.ExecutableScope

Parsec ExposedModule # 
Instance details

Defined in Distribution.Types.ExposedModule

Parsec FlagAssignment #
>>> simpleParsec "" :: Maybe FlagAssignment
Just (fromList [])
>>> simpleParsec "+foo -bar" :: Maybe FlagAssignment
Just (fromList [(FlagName "bar",(1,False)),(FlagName "foo",(1,True))])
>>> simpleParsec "-none -any" :: Maybe FlagAssignment
Just (fromList [(FlagName "any",(1,False)),(FlagName "none",(1,False))])
>>> simpleParsec "+foo -foo +foo +foo" :: Maybe FlagAssignment
Just (fromList [(FlagName "foo",(4,True))])
>>> simpleParsec "+foo -bar baz" :: Maybe FlagAssignment
Nothing

Issue #7279 was fixed in Cabal-3.8

>>> explicitEitherParsec (parsecCommaList parsec) "+foo , -bar" :: Either String [FlagAssignment]
Right [fromList [(FlagName "foo",(1,True))],fromList [(FlagName "bar",(1,False))]]
>>> explicitEitherParsec (parsecCommaList parsecFlagAssignmentNonEmpty) "+foo , -bar" :: Either String [FlagAssignment]
Right [fromList [(FlagName "foo",(1,True))],fromList [(FlagName "bar",(1,False))]]
>>> simpleParsec "+foo+foo" :: Maybe FlagAssignment
Nothing

Since: Cabal-syntax-3.4.0.0

Instance details

Defined in Distribution.Types.Flag

Parsec FlagName # 
Instance details

Defined in Distribution.Types.Flag

Methods

parsec :: CabalParsing m => m FlagName #

Parsec LibVersionInfo # 
Instance details

Defined in Distribution.Types.ForeignLib

Parsec ForeignLibOption # 
Instance details

Defined in Distribution.Types.ForeignLibOption

Parsec ForeignLibType # 
Instance details

Defined in Distribution.Types.ForeignLibType

Parsec IncludeRenaming # 
Instance details

Defined in Distribution.Types.IncludeRenaming

Parsec CompatPackageKey # 
Instance details

Defined in Distribution.Types.InstalledPackageInfo.FieldGrammar

Methods

parsec :: CabalParsing m => m CompatPackageKey #

Parsec ExposedModules # 
Instance details

Defined in Distribution.Types.InstalledPackageInfo.FieldGrammar

Methods

parsec :: CabalParsing m => m ExposedModules #

Parsec InstWith # 
Instance details

Defined in Distribution.Types.InstalledPackageInfo.FieldGrammar

Methods

parsec :: CabalParsing m => m InstWith #

Parsec SpecLicenseLenient # 
Instance details

Defined in Distribution.Types.InstalledPackageInfo.FieldGrammar

Methods

parsec :: CabalParsing m => m SpecLicenseLenient #

Parsec LegacyExeDependency # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Parsec LibraryVisibility # 
Instance details

Defined in Distribution.Types.LibraryVisibility

Parsec Mixin #
>>> simpleParsec "mylib" :: Maybe Mixin
Just (Mixin {mixinPackageName = PackageName "mylib", mixinLibraryName = LMainLibName, mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = DefaultRenaming, includeRequiresRn = DefaultRenaming}})
>>> simpleParsec "thatlib:sublib" :: Maybe Mixin
Just (Mixin {mixinPackageName = PackageName "thatlib", mixinLibraryName = LSubLibName (UnqualComponentName "sublib"), mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = DefaultRenaming, includeRequiresRn = DefaultRenaming}})
>>> simpleParsec "thatlib:thatlib" :: Maybe Mixin
Just (Mixin {mixinPackageName = PackageName "thatlib", mixinLibraryName = LMainLibName, mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = DefaultRenaming, includeRequiresRn = DefaultRenaming}})

Sublibrary syntax is accepted since cabal-version: 3.4.

>>> map (`simpleParsec'` "mylib:sub") [CabalSpecV3_0, CabalSpecV3_4] :: [Maybe Mixin]
[Nothing,Just (Mixin {mixinPackageName = PackageName "mylib", mixinLibraryName = LSubLibName (UnqualComponentName "sub"), mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = DefaultRenaming, includeRequiresRn = DefaultRenaming}})]
Instance details

Defined in Distribution.Types.Mixin

Methods

parsec :: CabalParsing m => m Mixin #

Parsec Module # 
Instance details

Defined in Distribution.Types.Module

Methods

parsec :: CabalParsing m => m Module #

Parsec ModuleReexport # 
Instance details

Defined in Distribution.Types.ModuleReexport

Parsec ModuleRenaming # 
Instance details

Defined in Distribution.Types.ModuleRenaming

Parsec MungedPackageId #
>>> simpleParsec "foo-bar-0" :: Maybe MungedPackageId
Just (MungedPackageId {mungedName = MungedPackageName (PackageName "foo-bar") LMainLibName, mungedVersion = mkVersion [0]})
>>> simpleParsec "foo-bar" :: Maybe MungedPackageId
Just (MungedPackageId {mungedName = MungedPackageName (PackageName "foo-bar") LMainLibName, mungedVersion = mkVersion []})
>>> simpleParsec "z-foo-bar-z-baz-0" :: Maybe MungedPackageId
Just (MungedPackageId {mungedName = MungedPackageName (PackageName "foo-bar") (LSubLibName (UnqualComponentName "baz")), mungedVersion = mkVersion [0]})
>>> simpleParsec "foo-bar-0-0" :: Maybe MungedPackageId
Nothing
>>> simpleParsec "foo-bar.0" :: Maybe MungedPackageId
Nothing
>>> simpleParsec "foo-bar.4-2" :: Maybe MungedPackageId
Nothing
Instance details

Defined in Distribution.Types.MungedPackageId

Parsec MungedPackageName #
>>> simpleParsec "servant" :: Maybe MungedPackageName
Just (MungedPackageName (PackageName "servant") LMainLibName)
>>> simpleParsec "z-servant-z-lackey" :: Maybe MungedPackageName
Just (MungedPackageName (PackageName "servant") (LSubLibName (UnqualComponentName "lackey")))
>>> simpleParsec "z-servant-zz" :: Maybe MungedPackageName
Just (MungedPackageName (PackageName "z-servant-zz") LMainLibName)
Instance details

Defined in Distribution.Types.MungedPackageName

Parsec PackageIdentifier #
>>> simpleParsec "foo-bar-0" :: Maybe PackageIdentifier
Just (PackageIdentifier {pkgName = PackageName "foo-bar", pkgVersion = mkVersion [0]})
>>> simpleParsec "foo-bar" :: Maybe PackageIdentifier
Just (PackageIdentifier {pkgName = PackageName "foo-bar", pkgVersion = mkVersion []})

Note: Stricter than Text instance

>>> simpleParsec "foo-bar-0-0" :: Maybe PackageIdentifier
Nothing
>>> simpleParsec "foo-bar.0" :: Maybe PackageIdentifier
Nothing
>>> simpleParsec "foo-bar.4-2" :: Maybe PackageIdentifier
Nothing
>>> simpleParsec "1.2.3" :: Maybe PackageIdentifier
Nothing
Instance details

Defined in Distribution.Types.PackageId

Parsec PackageName # 
Instance details

Defined in Distribution.Types.PackageName

Methods

parsec :: CabalParsing m => m PackageName #

Parsec PackageVersionConstraint #
>>> simpleParsec "foo" :: Maybe PackageVersionConstraint
Just (PackageVersionConstraint (PackageName "foo") (OrLaterVersion (mkVersion [0])))
>>> simpleParsec "foo >=2.0" :: Maybe PackageVersionConstraint
Just (PackageVersionConstraint (PackageName "foo") (OrLaterVersion (mkVersion [2,0])))
>>> simpleParsec "foo-2.0" :: Maybe PackageVersionConstraint
Just (PackageVersionConstraint (PackageName "foo") (ThisVersion (mkVersion [2,0])))
Instance details

Defined in Distribution.Types.PackageVersionConstraint

Parsec PkgconfigDependency # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Parsec PkgconfigName # 
Instance details

Defined in Distribution.Types.PkgconfigName

Parsec PkgconfigVersion #
>>> simpleParsec "1.0.2n" :: Maybe PkgconfigVersion
Just (PkgconfigVersion "1.0.2n")
>>> simpleParsec "0.3.5+ds" :: Maybe PkgconfigVersion
Nothing
Instance details

Defined in Distribution.Types.PkgconfigVersion

Parsec PkgconfigVersionRange # 
Instance details

Defined in Distribution.Types.PkgconfigVersionRange

Parsec KnownRepoType # 
Instance details

Defined in Distribution.Types.SourceRepo

Parsec RepoKind # 
Instance details

Defined in Distribution.Types.SourceRepo

Methods

parsec :: CabalParsing m => m RepoKind #

Parsec RepoType # 
Instance details

Defined in Distribution.Types.SourceRepo

Methods

parsec :: CabalParsing m => m RepoType #

Parsec TestType # 
Instance details

Defined in Distribution.Types.TestType

Methods

parsec :: CabalParsing m => m TestType #

Parsec DefUnitId # 
Instance details

Defined in Distribution.Types.UnitId

Methods

parsec :: CabalParsing m => m DefUnitId #

Parsec UnitId #

The textual format for UnitId coincides with the format GHC accepts for -package-id.

Instance details

Defined in Distribution.Types.UnitId

Methods

parsec :: CabalParsing m => m UnitId #

Parsec UnqualComponentName # 
Instance details

Defined in Distribution.Types.UnqualComponentName

Parsec Version # 
Instance details

Defined in Distribution.Types.Version

Methods

parsec :: CabalParsing m => m Version #

Parsec VersionRange #
>>> simpleParsec "^>= 3.4" :: Maybe VersionRange
Just (MajorBoundVersion (mkVersion [3,4]))

Small history:

-any and -none removed in 3.4 Use >=0 and <0 instead.

>>> map (`simpleParsec'` "-none") [CabalSpecV3_0, CabalSpecV3_4] :: [Maybe VersionRange]
[Just (EarlierVersion (mkVersion [0])),Nothing]

Set operations are introduced in 3.0

>>> map (`simpleParsec'` "^>= { 1.2 , 1.3 }") [CabalSpecV2_4, CabalSpecV3_0] :: [Maybe VersionRange]
[Nothing,Just (UnionVersionRanges (MajorBoundVersion (mkVersion [1,2])) (MajorBoundVersion (mkVersion [1,3])))]

^>= is introduced in 2.0

>>> map (`simpleParsec'` "^>=1.2") [CabalSpecV1_24, CabalSpecV2_0] :: [Maybe VersionRange]
[Nothing,Just (MajorBoundVersion (mkVersion [1,2]))]

-none is introduced in 1.22

>>> map (`simpleParsec'` "-none") [CabalSpecV1_20, CabalSpecV1_22] :: [Maybe VersionRange]
[Nothing,Just (EarlierVersion (mkVersion [0]))]

Operators are introduced in 1.8. Issues only a warning.

>>> map (`simpleParsecW'` "== 1 || ==2") [CabalSpecV1_6, CabalSpecV1_8] :: [Maybe VersionRange]
[Nothing,Just (UnionVersionRanges (ThisVersion (mkVersion [1])) (ThisVersion (mkVersion [2])))]

Wild-version ranges are introduced in 1.6. Issues only a warning.

>>> map (`simpleParsecW'` "== 1.2.*") [CabalSpecV1_4, CabalSpecV1_6] :: [Maybe VersionRange]
[Nothing,Just (IntersectVersionRanges (OrLaterVersion (mkVersion [1,2])) (EarlierVersion (mkVersion [1,3])))]
Instance details

Defined in Distribution.Types.VersionRange.Internal

Parsec Extension # 
Instance details

Defined in Language.Haskell.Extension

Methods

parsec :: CabalParsing m => m Extension #

Parsec Language # 
Instance details

Defined in Language.Haskell.Extension

Methods

parsec :: CabalParsing m => m Language #

Parsec InstallOutcome Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

Parsec Outcome Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

Methods

parsec :: CabalParsing m => m Outcome #

Parsec ReportLevel Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

Methods

parsec :: CabalParsing m => m ReportLevel #

Parsec PreSolver Source # 
Instance details

Defined in Distribution.Client.Dependency.Types

Methods

parsec :: CabalParsing m => m PreSolver #

Parsec ActiveRepoEntry Source # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Parsec ActiveRepos Source #

Note: empty string is not valid ActiveRepos.

>>> simpleParsec "" :: Maybe ActiveRepos
Nothing
>>> simpleParsec ":none" :: Maybe ActiveRepos
Just (ActiveRepos [])
>>> simpleParsec ":rest" :: Maybe ActiveRepos
Just (ActiveRepos [ActiveRepoRest CombineStrategyMerge])
>>> simpleParsec "hackage.haskell.org, :rest, head.hackage:override" :: Maybe ActiveRepos
Just (ActiveRepos [ActiveRepo (RepoName {unRepoName = "hackage.haskell.org"}) CombineStrategyMerge,ActiveRepoRest CombineStrategyMerge,ActiveRepo (RepoName {unRepoName = "head.hackage"}) CombineStrategyOverride])
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Methods

parsec :: CabalParsing m => m ActiveRepos #

Parsec CombineStrategy Source # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Parsec RepoIndexState Source # 
Instance details

Defined in Distribution.Client.IndexUtils.IndexState

Parsec TotalIndexState Source #
>>> simpleParsec "HEAD" :: Maybe TotalIndexState
Just (TIS IndexStateHead (fromList []))
>>> simpleParsec "" :: Maybe TotalIndexState
Nothing
>>> simpleParsec "hackage.haskell.org HEAD" :: Maybe TotalIndexState
Just (TIS IndexStateHead (fromList []))
>>> simpleParsec "2020-02-04T12:34:56Z, hackage.haskell.org HEAD" :: Maybe TotalIndexState
Just (TIS (IndexStateTime (TS 1580819696)) (fromList [(RepoName {unRepoName = "hackage.haskell.org"},IndexStateHead)]))
>>> simpleParsec "hackage.haskell.org 2020-02-04T12:34:56Z" :: Maybe TotalIndexState
Just (TIS IndexStateHead (fromList [(RepoName {unRepoName = "hackage.haskell.org"},IndexStateTime (TS 1580819696))]))
Instance details

Defined in Distribution.Client.IndexUtils.IndexState

Parsec Timestamp Source # 
Instance details

Defined in Distribution.Client.IndexUtils.Timestamp

Methods

parsec :: CabalParsing m => m Timestamp #

Parsec UserConstraint Source # 
Instance details

Defined in Distribution.Client.Targets

Parsec RelaxDepSubject Source # 
Instance details

Defined in Distribution.Client.Types.AllowNewer

Parsec RelaxDeps Source #
>>> simpleParsec "all" :: Maybe RelaxDeps
Just RelaxDepsAll
>>> simpleParsec "none" :: Maybe RelaxDeps
Just (RelaxDepsSome [])
>>> simpleParsec "*, *" :: Maybe RelaxDeps
Just RelaxDepsAll
>>> simpleParsec "*:*" :: Maybe RelaxDeps
Just RelaxDepsAll
>>> simpleParsec "foo:bar, quu:puu" :: Maybe RelaxDeps
Just (RelaxDepsSome [RelaxedDep (RelaxDepScopePackage (PackageName "foo")) RelaxDepModNone (RelaxDepSubjectPkg (PackageName "bar")),RelaxedDep (RelaxDepScopePackage (PackageName "quu")) RelaxDepModNone (RelaxDepSubjectPkg (PackageName "puu"))])

This is not a glitch, even it looks like:

>>> simpleParsec ", all" :: Maybe RelaxDeps
Just RelaxDepsAll
>>> simpleParsec "" :: Maybe RelaxDeps
Nothing
Instance details

Defined in Distribution.Client.Types.AllowNewer

Methods

parsec :: CabalParsing m => m RelaxDeps #

Parsec RelaxedDep Source # 
Instance details

Defined in Distribution.Client.Types.AllowNewer

Methods

parsec :: CabalParsing m => m RelaxedDep #

Parsec InstallMethod Source # 
Instance details

Defined in Distribution.Client.Types.InstallMethod

Parsec OverwritePolicy Source # 
Instance details

Defined in Distribution.Client.Types.OverwritePolicy

Parsec LocalRepo Source #

Note: doesn't parse localRepoSharedCache field.

Instance details

Defined in Distribution.Client.Types.Repo

Methods

parsec :: CabalParsing m => m LocalRepo #

Parsec RemoteRepo Source #

Note: serialised format represents RemoteRepo only partially.

Instance details

Defined in Distribution.Client.Types.Repo

Methods

parsec :: CabalParsing m => m RemoteRepo #

Parsec RepoName Source #
>>> simpleParsec "hackage.haskell.org" :: Maybe RepoName
Just (RepoName {unRepoName = "hackage.haskell.org"})
>>> simpleParsec "0123" :: Maybe RepoName
Nothing
Instance details

Defined in Distribution.Client.Types.RepoName

Methods

parsec :: CabalParsing m => m RepoName #

Parsec OnlyConstrained # 
Instance details

Defined in Distribution.Solver.Types.Settings

Parsec Bool # 
Instance details

Defined in Distribution.Parsec

Methods

parsec :: CabalParsing m => m Bool #

Parsec a => Parsec (MQuoted a) # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m (MQuoted a) #

Parsec a => Parsec (Identity a) # 
Instance details

Defined in Distribution.Parsec

Methods

parsec :: CabalParsing m => m (Identity a) #

Parsec (RelativePathNT from to) # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m (RelativePathNT from to) #

Parsec (SymbolicPathNT from to) # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m (SymbolicPathNT from to) #

(Newtype a b, Sep sep, Parsec b) => Parsec (List sep b a) # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m (List sep b a) #

(Newtype a b, Sep sep, Parsec b) => Parsec (NonEmpty' sep b a) # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m (NonEmpty' sep b a) #

(Newtype a b, Ord a, Sep sep, Parsec b) => Parsec (Set' sep b a) # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m (Set' sep b a) #

Parsec (SymbolicPathX 'AllowAbsolute from to) # 
Instance details

Defined in Distribution.Utils.Path

Methods

parsec :: CabalParsing m => m (SymbolicPathX 'AllowAbsolute from to) #

Parsec (SymbolicPathX 'OnlyRelative from to) # 
Instance details

Defined in Distribution.Utils.Path

Methods

parsec :: CabalParsing m => m (SymbolicPathX 'OnlyRelative from to) #

class Pretty a where #

Minimal complete definition

pretty

Methods

pretty :: a -> Doc #

prettyVersioned :: CabalSpecVersion -> a -> Doc #

Instances

Instances details
Pretty FilePathRoot # 
Instance details

Defined in Distribution.Simple.FileMonitor.Types

Pretty RootedGlob # 
Instance details

Defined in Distribution.Simple.FileMonitor.Types

Pretty Glob # 
Instance details

Defined in Distribution.Simple.Glob.Internal

Pretty Suffix # 
Instance details

Defined in Distribution.Simple.PreProcess.Types

Pretty HaddockTarget # 
Instance details

Defined in Distribution.Simple.Setup.Haddock

Pretty TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup.Test

Pretty Verbosity # 
Instance details

Defined in Distribution.Verbosity

Pretty OpenModule # 
Instance details

Defined in Distribution.Backpack

Pretty OpenUnitId # 
Instance details

Defined in Distribution.Backpack

Pretty AbiTag # 
Instance details

Defined in Distribution.Compiler

Pretty CompilerFlavor # 
Instance details

Defined in Distribution.Compiler

Pretty CompilerId # 
Instance details

Defined in Distribution.Compiler

Pretty FilePathNT # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty SpecLicense # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty SpecVersion # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty TestedWith # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty Token # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty Token' # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty License # 
Instance details

Defined in Distribution.License

Pretty ModuleName # 
Instance details

Defined in Distribution.ModuleName

Pretty CompatDataDir # 
Instance details

Defined in Distribution.PackageDescription.FieldGrammar

Pretty CompatLicenseFile # 
Instance details

Defined in Distribution.PackageDescription.FieldGrammar

Pretty License # 
Instance details

Defined in Distribution.SPDX.License

Pretty LicenseExceptionId # 
Instance details

Defined in Distribution.SPDX.LicenseExceptionId

Pretty LicenseExpression # 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Pretty SimpleLicenseExpression # 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Pretty LicenseId # 
Instance details

Defined in Distribution.SPDX.LicenseId

Pretty LicenseRef # 
Instance details

Defined in Distribution.SPDX.LicenseReference

Pretty Arch # 
Instance details

Defined in Distribution.System

Pretty OS # 
Instance details

Defined in Distribution.System

Pretty Platform # 
Instance details

Defined in Distribution.System

Pretty AbiDependency # 
Instance details

Defined in Distribution.Types.AbiDependency

Pretty AbiHash # 
Instance details

Defined in Distribution.Types.AbiHash

Pretty BenchmarkType # 
Instance details

Defined in Distribution.Types.BenchmarkType

Pretty BuildType # 
Instance details

Defined in Distribution.Types.BuildType

Pretty ComponentId # 
Instance details

Defined in Distribution.Types.ComponentId

Pretty ComponentName # 
Instance details

Defined in Distribution.Types.ComponentName

Pretty Dependency #
>>> prettyShow $ Dependency (mkPackageName "pkg") anyVersion mainLibSet
"pkg"
>>> prettyShow $ Dependency (mkPackageName "pkg") anyVersion $ NES.insert (LSubLibName $ mkUnqualComponentName "sublib") mainLibSet
"pkg:{pkg,sublib}"
>>> prettyShow $ Dependency (mkPackageName "pkg") anyVersion $ NES.singleton (LSubLibName $ mkUnqualComponentName "sublib")
"pkg:sublib"
>>> prettyShow $ Dependency (mkPackageName "pkg") anyVersion $ NES.insert (LSubLibName $ mkUnqualComponentName "sublib-b") $ NES.singleton (LSubLibName $ mkUnqualComponentName "sublib-a")
"pkg:{sublib-a,sublib-b}"
Instance details

Defined in Distribution.Types.Dependency

Pretty ExeDependency # 
Instance details

Defined in Distribution.Types.ExeDependency

Pretty ExecutableScope # 
Instance details

Defined in Distribution.Types.ExecutableScope

Pretty ExposedModule # 
Instance details

Defined in Distribution.Types.ExposedModule

Pretty FlagAssignment #

Since: Cabal-syntax-3.4.0.0

Instance details

Defined in Distribution.Types.Flag

Pretty FlagName # 
Instance details

Defined in Distribution.Types.Flag

Pretty LibVersionInfo # 
Instance details

Defined in Distribution.Types.ForeignLib

Pretty ForeignLibOption # 
Instance details

Defined in Distribution.Types.ForeignLibOption

Pretty ForeignLibType # 
Instance details

Defined in Distribution.Types.ForeignLibType

Pretty IncludeRenaming # 
Instance details

Defined in Distribution.Types.IncludeRenaming

Pretty CompatPackageKey # 
Instance details

Defined in Distribution.Types.InstalledPackageInfo.FieldGrammar

Methods

pretty :: CompatPackageKey -> Doc #

prettyVersioned :: CabalSpecVersion -> CompatPackageKey -> Doc #

Pretty ExposedModules # 
Instance details

Defined in Distribution.Types.InstalledPackageInfo.FieldGrammar

Methods

pretty :: ExposedModules -> Doc #

prettyVersioned :: CabalSpecVersion -> ExposedModules -> Doc #

Pretty InstWith # 
Instance details

Defined in Distribution.Types.InstalledPackageInfo.FieldGrammar

Methods

pretty :: InstWith -> Doc #

prettyVersioned :: CabalSpecVersion -> InstWith -> Doc #

Pretty SpecLicenseLenient # 
Instance details

Defined in Distribution.Types.InstalledPackageInfo.FieldGrammar

Methods

pretty :: SpecLicenseLenient -> Doc #

prettyVersioned :: CabalSpecVersion -> SpecLicenseLenient -> Doc #

Pretty LegacyExeDependency # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Pretty LibraryVisibility # 
Instance details

Defined in Distribution.Types.LibraryVisibility

Pretty MissingDependency # 
Instance details

Defined in Distribution.Types.MissingDependency

Pretty Mixin # 
Instance details

Defined in Distribution.Types.Mixin

Pretty Module # 
Instance details

Defined in Distribution.Types.Module

Pretty ModuleReexport # 
Instance details

Defined in Distribution.Types.ModuleReexport

Pretty ModuleRenaming # 
Instance details

Defined in Distribution.Types.ModuleRenaming

Pretty MungedPackageId #
>>> prettyShow $ MungedPackageId (MungedPackageName "servant" LMainLibName) (mkVersion [1,2,3])
"servant-1.2.3"
>>> prettyShow $ MungedPackageId (MungedPackageName "servant" (LSubLibName "lackey")) (mkVersion [0,1,2])
"z-servant-z-lackey-0.1.2"
Instance details

Defined in Distribution.Types.MungedPackageId

Pretty MungedPackageName #

Computes the package name for a library. If this is the public library, it will just be the original package name; otherwise, it will be a munged package name recording the original package name as well as the name of the internal library.

A lot of tooling in the Haskell ecosystem assumes that if something is installed to the package database with the package name foo, then it actually is an entry for the (only public) library in package foo. With internal packages, this is not necessarily true: a public library as well as arbitrarily many internal libraries may come from the same package. To prevent tools from getting confused in this case, the package name of these internal libraries is munged so that they do not conflict the public library proper. A particular case where this matters is ghc-pkg: if we don't munge the package name, the inplace registration will OVERRIDE a different internal library.

We munge into a reserved namespace, "z-", and encode both the component name and the package name of an internal library using the following format:

compat-pkg-name ::= "z-" package-name "-z-" library-name

where package-name and library-name have "-" ( "z" + ) "-" segments encoded by adding an extra "z".

When we have the public library, the compat-pkg-name is just the package-name, no surprises there!

>>> prettyShow $ MungedPackageName "servant" LMainLibName
"servant"
>>> prettyShow $ MungedPackageName "servant" (LSubLibName "lackey")
"z-servant-z-lackey"
Instance details

Defined in Distribution.Types.MungedPackageName

Pretty PackageIdentifier # 
Instance details

Defined in Distribution.Types.PackageId

Pretty PackageName # 
Instance details

Defined in Distribution.Types.PackageName

Pretty PackageVersionConstraint # 
Instance details

Defined in Distribution.Types.PackageVersionConstraint

Pretty PkgconfigDependency # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Pretty PkgconfigName # 
Instance details

Defined in Distribution.Types.PkgconfigName

Pretty PkgconfigVersion # 
Instance details

Defined in Distribution.Types.PkgconfigVersion

Pretty PkgconfigVersionRange # 
Instance details

Defined in Distribution.Types.PkgconfigVersionRange

Pretty KnownRepoType # 
Instance details

Defined in Distribution.Types.SourceRepo

Pretty RepoKind # 
Instance details

Defined in Distribution.Types.SourceRepo

Pretty RepoType # 
Instance details

Defined in Distribution.Types.SourceRepo

Pretty TestType # 
Instance details

Defined in Distribution.Types.TestType

Pretty DefUnitId # 
Instance details

Defined in Distribution.Types.UnitId

Pretty UnitId #

The textual format for UnitId coincides with the format GHC accepts for -package-id.

Instance details

Defined in Distribution.Types.UnitId

Pretty UnqualComponentName # 
Instance details

Defined in Distribution.Types.UnqualComponentName

Pretty Version # 
Instance details

Defined in Distribution.Types.Version

Pretty VersionRange #
>>> fmap pretty (simpleParsec' CabalSpecV1_6 "== 3.2.*" :: Maybe VersionRange)
Just >=3.2 && <3.3
>>> fmap (prettyVersioned CabalSpecV1_6) (simpleParsec' CabalSpecV1_6 "== 3.2.*" :: Maybe VersionRange)
Just ==3.2.*
>>> fmap pretty (simpleParsec' CabalSpecV1_6 "-any" :: Maybe VersionRange)
Just >=0
>>> fmap (prettyVersioned CabalSpecV1_6) (simpleParsec' CabalSpecV1_6 "-any" :: Maybe VersionRange)
Just >=0
Instance details

Defined in Distribution.Types.VersionRange.Internal

Pretty Extension # 
Instance details

Defined in Language.Haskell.Extension

Pretty KnownExtension # 
Instance details

Defined in Language.Haskell.Extension

Pretty Language # 
Instance details

Defined in Language.Haskell.Extension

Pretty InstallOutcome Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

Pretty Outcome Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

Pretty ReportLevel Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

Pretty PreSolver Source # 
Instance details

Defined in Distribution.Client.Dependency.Types

Pretty ActiveRepoEntry Source # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Pretty ActiveRepos Source # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Pretty CombineStrategy Source # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Pretty RepoIndexState Source # 
Instance details

Defined in Distribution.Client.IndexUtils.IndexState

Pretty TotalIndexState Source # 
Instance details

Defined in Distribution.Client.IndexUtils.IndexState

Pretty Timestamp Source # 
Instance details

Defined in Distribution.Client.IndexUtils.Timestamp

Pretty UserConstraint Source # 
Instance details

Defined in Distribution.Client.Targets

Pretty RelaxDepSubject Source # 
Instance details

Defined in Distribution.Client.Types.AllowNewer

Pretty RelaxDeps Source # 
Instance details

Defined in Distribution.Client.Types.AllowNewer

Pretty RelaxedDep Source # 
Instance details

Defined in Distribution.Client.Types.AllowNewer

Pretty InstallMethod Source # 
Instance details

Defined in Distribution.Client.Types.InstallMethod

Pretty OverwritePolicy Source # 
Instance details

Defined in Distribution.Client.Types.OverwritePolicy

Pretty LocalRepo Source # 
Instance details

Defined in Distribution.Client.Types.Repo

Pretty RemoteRepo Source # 
Instance details

Defined in Distribution.Client.Types.Repo

Pretty RepoName Source # 
Instance details

Defined in Distribution.Client.Types.RepoName

Pretty Component # 
Instance details

Defined in Distribution.Solver.Types.ComponentDeps

Pretty ConstraintSource # 
Instance details

Defined in Distribution.Solver.Types.ConstraintSource

Pretty ConstraintScope # 
Instance details

Defined in Distribution.Solver.Types.PackageConstraint

Pretty PackageConstraint # 
Instance details

Defined in Distribution.Solver.Types.PackageConstraint

Pretty PackageProperty # 
Instance details

Defined in Distribution.Solver.Types.PackageConstraint

Pretty ProjectConfigPath # 
Instance details

Defined in Distribution.Solver.Types.ProjectConfigPath

Pretty OnlyConstrained # 
Instance details

Defined in Distribution.Solver.Types.Settings

Pretty Doc #

Since: Cabal-syntax-3.4.0.0

Instance details

Defined in Distribution.Pretty

Pretty Bool # 
Instance details

Defined in Distribution.Pretty

Pretty Int # 
Instance details

Defined in Distribution.Pretty

Pretty a => Pretty (MQuoted a) # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty a => Pretty (Identity a) # 
Instance details

Defined in Distribution.Pretty

Pretty (RelativePathNT from to) # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty (SymbolicPathNT from to) # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

(Newtype a b, Sep sep, Pretty b) => Pretty (List sep b a) # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

pretty :: List sep b a -> Doc #

prettyVersioned :: CabalSpecVersion -> List sep b a -> Doc #

(Newtype a b, Sep sep, Pretty b) => Pretty (NonEmpty' sep b a) # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

pretty :: NonEmpty' sep b a -> Doc #

prettyVersioned :: CabalSpecVersion -> NonEmpty' sep b a -> Doc #

(Newtype a b, Sep sep, Pretty b) => Pretty (Set' sep b a) # 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

pretty :: Set' sep b a -> Doc #

prettyVersioned :: CabalSpecVersion -> Set' sep b a -> Doc #

Pretty (SymbolicPathX allowAbsolute from to) # 
Instance details

Defined in Distribution.Utils.Path

Methods

pretty :: SymbolicPathX allowAbsolute from to -> Doc #

prettyVersioned :: CabalSpecVersion -> SymbolicPathX allowAbsolute from to -> Doc #