9
9
10
10
-- | The only purpose of this module is to prevent the export of
11
11
-- 'VersionRange' constructors from
12
- -- ' Distribution.Types.VersionRange' . To avoid creating orphan
12
+ -- " Distribution.Types.VersionRange" . To avoid creating orphan
13
13
-- instances, a lot of related code had to be moved here too.
14
14
15
15
module Distribution.Types.VersionRange.Internal
@@ -70,7 +70,7 @@ instance NFData VersionRange where rnf = genericRnf
70
70
anyVersion :: VersionRange
71
71
anyVersion = OrLaterVersion (mkVersion [0 ])
72
72
73
- -- | The empty version range, that is a version range containing no versions.
73
+ -- | The empty version range @-none@ , that is a version range containing no versions.
74
74
--
75
75
-- This can be constructed using any unsatisfiable version range expression,
76
76
-- for example @< 0@.
@@ -80,57 +80,57 @@ anyVersion = OrLaterVersion (mkVersion [0])
80
80
noVersion :: VersionRange
81
81
noVersion = EarlierVersion (mkVersion [0 ])
82
82
83
- -- | The version range @== v@
83
+ -- | The version range @== v@.
84
84
--
85
85
-- > withinRange v' (thisVersion v) = v' == v
86
86
--
87
87
thisVersion :: Version -> VersionRange
88
88
thisVersion = ThisVersion
89
89
90
- -- | The version range @< v || > v@
90
+ -- | The version range @/= v@.
91
91
--
92
92
-- > withinRange v' (notThisVersion v) = v' /= v
93
93
--
94
94
notThisVersion :: Version -> VersionRange
95
95
notThisVersion v = UnionVersionRanges (EarlierVersion v) (LaterVersion v)
96
96
97
- -- | The version range @> v@
97
+ -- | The version range @> v@.
98
98
--
99
99
-- > withinRange v' (laterVersion v) = v' > v
100
100
--
101
101
laterVersion :: Version -> VersionRange
102
102
laterVersion = LaterVersion
103
103
104
- -- | The version range @>= v@
104
+ -- | The version range @>= v@.
105
105
--
106
106
-- > withinRange v' (orLaterVersion v) = v' >= v
107
107
--
108
108
orLaterVersion :: Version -> VersionRange
109
109
orLaterVersion = OrLaterVersion
110
110
111
- -- | The version range @< v@
111
+ -- | The version range @< v@.
112
112
--
113
113
-- > withinRange v' (earlierVersion v) = v' < v
114
114
--
115
115
earlierVersion :: Version -> VersionRange
116
116
earlierVersion = EarlierVersion
117
117
118
- -- | The version range @<= v@
118
+ -- | The version range @<= v@.
119
119
--
120
120
-- > withinRange v' (orEarlierVersion v) = v' <= v
121
121
--
122
122
orEarlierVersion :: Version -> VersionRange
123
123
orEarlierVersion = OrEarlierVersion
124
124
125
- -- | The version range @vr1 || vr2@
125
+ -- | The version range @vr1 || vr2@.
126
126
--
127
127
-- > withinRange v' (unionVersionRanges vr1 vr2)
128
128
-- > = withinRange v' vr1 || withinRange v' vr2
129
129
--
130
130
unionVersionRanges :: VersionRange -> VersionRange -> VersionRange
131
131
unionVersionRanges = UnionVersionRanges
132
132
133
- -- | The version range @vr1 && vr2@
133
+ -- | The version range @vr1 && vr2@.
134
134
--
135
135
-- > withinRange v' (intersectVersionRanges vr1 vr2)
136
136
-- > = withinRange v' vr1 && withinRange v' vr2
@@ -141,9 +141,9 @@ intersectVersionRanges = IntersectVersionRanges
141
141
-- | The version range @== v.*@.
142
142
--
143
143
-- For example, for version @1.2@, the version range @== 1.2.*@ is the same as
144
- -- @>= 1.2 && < 1.3@
144
+ -- @>= 1.2 && < 1.3@.
145
145
--
146
- -- > withinRange v' (laterVersion v) = v' >= v && v' < upper v
146
+ -- > withinRange v' (withinVersion v) = v' >= v && v' < upper v
147
147
-- > where
148
148
-- > upper (Version lower t) = Version (init lower ++ [last lower + 1]) t
149
149
--
@@ -179,7 +179,9 @@ data VersionRangeF a
179
179
deriving ( Data , Eq , Generic , Read , Show , Typeable
180
180
, Functor , Foldable , Traversable )
181
181
182
- -- | @since 2.2
182
+ -- | Generic destructor for 'VersionRange'.
183
+ --
184
+ -- @since 2.2
183
185
projectVersionRange :: VersionRange -> VersionRangeF VersionRange
184
186
projectVersionRange (ThisVersion v) = ThisVersionF v
185
187
projectVersionRange (LaterVersion v) = LaterVersionF v
@@ -196,7 +198,9 @@ projectVersionRange (IntersectVersionRanges a b) = IntersectVersionRangesF a b
196
198
cataVersionRange :: (VersionRangeF a -> a ) -> VersionRange -> a
197
199
cataVersionRange f = c where c = f . fmap c . projectVersionRange
198
200
199
- -- | @since 2.2
201
+ -- | Generic constructor for 'VersionRange'.
202
+ --
203
+ -- @since 2.2
200
204
embedVersionRange :: VersionRangeF VersionRange -> VersionRange
201
205
embedVersionRange (ThisVersionF v) = ThisVersion v
202
206
embedVersionRange (LaterVersionF v) = LaterVersion v
@@ -213,7 +217,7 @@ embedVersionRange (IntersectVersionRangesF a b) = IntersectVersionRanges a b
213
217
anaVersionRange :: (a -> VersionRangeF a ) -> a -> VersionRange
214
218
anaVersionRange g = a where a = embedVersionRange . fmap a . g
215
219
216
- -- | Refold 'VersionRange'
220
+ -- | Refold 'VersionRange'.
217
221
--
218
222
-- @since 2.2
219
223
hyloVersionRange :: (VersionRangeF VersionRange -> VersionRange )
@@ -318,7 +322,7 @@ prettyVersionRange16 vr = prettyVersionRange vr
318
322
instance Parsec VersionRange where
319
323
parsec = askCabalSpecVersion >>= versionRangeParser versionDigitParser
320
324
321
- -- | 'VersionRange' parser parametrised by version digit parser
325
+ -- | 'VersionRange' parser parametrised by version digit parser.
322
326
--
323
327
-- - 'versionDigitParser' is used for all 'VersionRange'.
324
328
-- - 'P.integral' is used for backward-compat @pkgconfig-depends@
@@ -506,7 +510,7 @@ versionRangeParser digitParser csv = expr
506
510
-- Wildcard range utilities
507
511
--
508
512
509
- -- | Compute next greater major version to be used as upper bound
513
+ -- | Compute next greater major version to be used as upper bound.
510
514
--
511
515
-- Example: @0.4.1@ produces the version @0.5@ which then can be used
512
516
-- to construct a range @>= 0.4.1 && < 0.5@
@@ -518,7 +522,13 @@ majorUpperBound = alterVersion $ \numbers -> case numbers of
518
522
[m1] -> [m1,1 ] -- e.g. version '1'
519
523
(m1: m2: _) -> [m1,m2+ 1 ]
520
524
521
- -- | @since 2.2
525
+ -- | Increment the last version number.
526
+ --
527
+ -- Example: For @1.2@ this returns @1.3@
528
+ -- so that it can be used as upper bound when resolving @== 1.2.*@.
529
+ -- For @0.4.1@ it returns @0.4.2@.
530
+ --
531
+ -- @since 2.2
522
532
wildcardUpperBound :: Version -> Version
523
533
wildcardUpperBound = alterVersion $
524
534
\ lowerBound -> case unsnoc lowerBound of
0 commit comments