@@ -40,7 +40,7 @@ public struct ConfigLimitedSizeArray<T, TMinLength: ReadInt, TMaxLength: ReadInt
4040 try self . init ( array, minLength: minLength, maxLength: maxLength)
4141 }
4242
43- private init ( _ array: [ T ] , minLength: Int , maxLength: Int ) throws ( ConfigLimitedSizeArrayError) {
43+ private init ( _ array: [ T ] , minLength: Int , maxLength: Int , validate : Bool = true ) throws ( ConfigLimitedSizeArrayError) {
4444 guard minLength >= 0 else {
4545 throw ConfigLimitedSizeArrayError . invalidMinLength
4646 }
@@ -52,15 +52,17 @@ public struct ConfigLimitedSizeArray<T, TMinLength: ReadInt, TMaxLength: ReadInt
5252 self . minLength = minLength
5353 self . maxLength = maxLength
5454
55- try validateThrowing ( )
55+ if validate {
56+ try validateThrowing ( )
57+ }
5658 }
5759
5860 private func validate( ) {
5961 assert ( array. count >= minLength, " count \( array. count) >= minLength \( minLength) " )
6062 assert ( array. count <= maxLength, " count \( array. count) <= maxLength \( maxLength) " )
6163 }
6264
63- private func validateThrowing( ) throws ( ConfigLimitedSizeArrayError) {
65+ public func validateThrowing( ) throws ( ConfigLimitedSizeArrayError) {
6466 guard array. count >= minLength else {
6567 throw ConfigLimitedSizeArrayError . tooFewElements
6668 }
@@ -231,19 +233,19 @@ extension ConfigLimitedSizeArray: Decodable where T: Decodable {
231233 for _ in 0 ..< minLength {
232234 try arr. append ( container. decode ( T . self) )
233235 }
234- try self . init ( arr, minLength: minLength, maxLength: maxLength)
236+ try self . init ( arr, minLength: minLength, maxLength: maxLength, validate : false )
235237 } else {
236238 // variable size array
237239 var container = try decoder. unkeyedContainer ( )
238240 if decoder. isJamCodec {
239241 let array = try container. decode ( [ T ] . self)
240- try self . init ( array, minLength: minLength, maxLength: maxLength)
242+ try self . init ( array, minLength: minLength, maxLength: maxLength, validate : false )
241243 } else {
242244 var array = [ T] ( )
243245 while !container. isAtEnd {
244246 try array. append ( container. decode ( T . self) )
245247 }
246- try self . init ( array, minLength: minLength, maxLength: maxLength)
248+ try self . init ( array, minLength: minLength, maxLength: maxLength, validate : false )
247249 }
248250 }
249251 }
0 commit comments