5
5
// Created by Lennard Sprong on 20/06/2025.
6
6
//
7
7
8
- #if swift(>=6.2)
9
8
extension Gen {
9
+ #if swift(>=6.2)
10
10
/// Produces a generator that randomly selects one of the provided generators.
11
11
///
12
12
/// Every generator has an equal chance of being run.
@@ -32,6 +32,7 @@ extension Gen {
32
32
/// - Parameter generators: The generators to choose from.
33
33
/// - Returns: A new generator.
34
34
@_documentation ( visibility: internal)
35
+ @available ( swift 6 . 2 )
35
36
public static func oneOf< Input> ( _ generators: Generator < Value , AnySequence < Input > > ... )
36
37
-> Generator < Value , AnySequence < ( index: Int , value: Input ) > >
37
38
{
@@ -63,6 +64,7 @@ extension Gen {
63
64
/// - Parameter generators: The generators to choose from, with a weight for each.
64
65
/// - Returns: A new generator.
65
66
@_documentation ( visibility: internal)
67
+ @available ( swift 6 . 2 )
66
68
public static func frequency< Input> (
67
69
_ generators: [ ( weight: FloatLiteralType , gen: Generator < Value , AnySequence < Input > > ) ]
68
70
)
@@ -99,6 +101,8 @@ extension Gen {
99
101
)
100
102
}
101
103
104
+ #endif // swift(>=6.2)
105
+
102
106
/// Produces a generator that randomly selects one of the provided generators.
103
107
///
104
108
/// Every generator has an equal chance of being run.
@@ -123,17 +127,22 @@ extension Gen {
123
127
///
124
128
/// - Parameter generators: The generators to choose from.
125
129
/// - Returns: A new generator.
130
+ @available ( swift 6 . 2 )
126
131
@_disfavoredOverload
127
132
public static func oneOf< each Seq : Sequence > ( _ generators: repeat Generator < Value , each Seq > )
128
133
-> Generator < Value , AnySequence < ( index: Int , value: Any ) > >
129
134
{
135
+ #if swift(>=6.2)
130
136
var gens : [ ( weight: FloatLiteralType , gen: Generator < Value , AnySequence < Any > > ) ] = [ ]
131
137
132
138
for gen in repeat each generators {
133
139
gens. append ( ( weight: 1.0 , gen. eraseToAny ( ) ) )
134
140
}
135
141
136
142
return frequency ( gens)
143
+ #else
144
+ fatalError ( " Not supported by Swift compiler below 6.2 " )
145
+ #endif
137
146
}
138
147
139
148
/// Produces a generator that randomly selects one of the provided generators, with a weighted distribution.
@@ -158,19 +167,23 @@ extension Gen {
158
167
///
159
168
/// - Parameter generators: The generators to choose from, with a weight for each.
160
169
/// - Returns: A new generator.
170
+ @available ( swift 6 . 2 )
161
171
@_disfavoredOverload
162
172
public static func frequency< each Seq : Sequence > (
163
173
_ generators: repeat ( weight: FloatLiteralType , gen: Generator < Value , each Seq > )
164
174
)
165
175
-> Generator < Value , AnySequence < ( index: Int , value: Any ) > >
166
176
{
177
+ #if swift(>=6.2)
167
178
var gens : [ ( weight: FloatLiteralType , gen: Generator < Value , AnySequence < Any > > ) ] = [ ]
168
179
169
180
for (weight, gen) in repeat each generators {
170
181
gens. append ( ( weight: weight, gen. eraseToAny ( ) ) )
171
182
}
172
183
173
184
return frequency ( gens)
185
+ #else
186
+ fatalError ( " Not supported by Swift compiler below 6.2 " )
187
+ #endif
174
188
}
175
189
}
176
- #endif // swift(>=6.2)
0 commit comments