浏览代码

Frozen enum. Fixes #872

Marcin Krzyzanowski 4 年之前
父节点
当前提交
9850f4cb23
共有 3 个文件被更改,包括 5 次插入6 次删除
  1. 3 0
      CONTRIBUTORS.txt
  2. 1 6
      Sources/CryptoSwift/SHA2.swift
  3. 1 0
      config/Project-Shared.xcconfig

+ 3 - 0
CONTRIBUTORS.txt

@@ -28,10 +28,12 @@ organizations who have contributed source code to CryptoSwift.
 - Chris Amanse <chris@chrisamanse.xyz>
 - Christian Steffens <cs@hibento.de>
 - Cihat Gündüz <github@cihatguenduez.de>
+- Cosmin Baies <cbaies@blockchain.com>
 - Dave Wood <dave@cerebralgardens.com>
 - Dima Kalachov <dima.kalachov@gmail.com>
 - Dusan Klinec <dusan.klinec@gmail.com>
 - Eneko Alonso <eneko.alonso@gmail.com>
+- Eugene Berdnikov <eberdnikov@outlook.com>
 - Evan Maloney <emaloney@gilt.com>
 - Evin Ugur <evinoog96@gmail.com>
 - Frank Langel <frank@frankjlangel.com>
@@ -47,6 +49,7 @@ organizations who have contributed source code to CryptoSwift.
 - Javier Soto <javiers@twitter.com>
 - Jeremy Greenwood <jeremy@mobelux.com>
 - John Hammerlund <johnhammerlund@gmail.com>
+- Jonas Obrist <ojiidotch@gmail.com>
 - K.K. POON <noopkk@gmail.com>
 - Keith Smiley <keithbsmiley@gmail.com>
 - Koray Koska <koray@koska.at>

+ 1 - 6
Sources/CryptoSwift/SHA2.swift

@@ -43,6 +43,7 @@ public final class SHA2: DigestType {
   @usableFromInline
   var accumulatedHash64 = Array<UInt64>()
 
+  @frozen
   public enum Variant: RawRepresentable {
     case sha224, sha256, sha384, sha512
 
@@ -316,8 +317,6 @@ extension SHA2: Updatable {
             self.process32(block: chunk, currentHash: &self.accumulatedHash32)
           case .sha384, .sha512:
             self.process64(block: chunk, currentHash: &self.accumulatedHash64)
-          @unknown default:
-            preconditionFailure()
           }
         processedBytes += chunk.count
       }
@@ -352,8 +351,6 @@ extension SHA2: Updatable {
           result[pos + 7] = UInt8(h & 0xff)
           pos += 8
         }
-      @unknown default:
-          preconditionFailure()
     }
 
     // reset hash value for instance
@@ -363,8 +360,6 @@ extension SHA2: Updatable {
           self.accumulatedHash32 = self.variant.h.lazy.map { UInt32($0) } // FIXME: UInt64 for process64
         case .sha384, .sha512:
           self.accumulatedHash64 = self.variant.h
-        @unknown default:
-          preconditionFailure()
       }
     }
 

+ 1 - 0
config/Project-Shared.xcconfig

@@ -78,6 +78,7 @@ VERSIONING_SYSTEM = apple-generic
 CURRENT_PROJECT_VERSION = 1
 
 // XCFramework
+// Swift have (at least) 2 language dialects: With and without Library Evolution behave differently regarding enums.
 BUILD_LIBRARY_FOR_DISTRIBUTION = YES
 
 // Catalyst