From 3f8d03a620339bcad94a10c2504cfcb0e406975f Mon Sep 17 00:00:00 2001 From: Troy Sornson Date: Mon, 21 Apr 2025 15:09:36 -0600 Subject: [PATCH 1/3] Add type restrictions to Digest directory --- src/digest/adler32.cr | 6 +++--- src/digest/crc32.cr | 6 +++--- src/digest/digest.cr | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/digest/adler32.cr b/src/digest/adler32.cr index 0b31e52a80b1..49d314d617af 100644 --- a/src/digest/adler32.cr +++ b/src/digest/adler32.cr @@ -17,16 +17,16 @@ class Digest::Adler32 < ::Digest LibZ.adler32(0, nil, 0).to_u32 end - def self.checksum(data) : UInt32 + def self.checksum(data : Slice(UInt8) | String) : UInt32 update(data, initial) end - def self.update(data, adler32 : UInt32) : UInt32 + def self.update(data : Slice(UInt8) | String, adler32 : UInt32) : UInt32 slice = data.to_slice LibZ.adler32(adler32, slice, slice.size).to_u32 end - def self.combine(adler1 : UInt32, adler2 : UInt32, len) : UInt32 + def self.combine(adler1 : UInt32, adler2 : UInt32, len : Int32) : UInt32 LibZ.adler32_combine(adler1, adler2, len).to_u32 end diff --git a/src/digest/crc32.cr b/src/digest/crc32.cr index b32ecd68e41f..807ba630e19f 100644 --- a/src/digest/crc32.cr +++ b/src/digest/crc32.cr @@ -17,16 +17,16 @@ class Digest::CRC32 < ::Digest LibZ.crc32(0, nil, 0).to_u32 end - def self.checksum(data) : UInt32 + def self.checksum(data : String) : UInt32 update(data, initial) end - def self.update(data, crc32 : UInt32) : UInt32 + def self.update(data : Slice(UInt8) | String, crc32 : UInt32) : UInt32 slice = data.to_slice LibZ.crc32(crc32, slice, slice.size).to_u32 end - def self.combine(crc1 : UInt32, crc2 : UInt32, len) : UInt32 + def self.combine(crc1 : UInt32, crc2 : UInt32, len : Int32) : UInt32 LibZ.crc32_combine(crc1, crc2, len).to_u32 end diff --git a/src/digest/digest.cr b/src/digest/digest.cr index c55d2a84ead1..896b01b87f3d 100644 --- a/src/digest/digest.cr +++ b/src/digest/digest.cr @@ -21,7 +21,7 @@ abstract class Digest # The modules adds convenient class methods as `Digest::MD5.digest`, `Digest::MD5.hexdigest`. module ClassMethods # Returns the hash of *data*. *data* must respond to `#to_slice`. - def digest(data) : Bytes + def digest(data : String) : Bytes digest do |ctx| ctx.update(data.to_slice) end @@ -85,7 +85,7 @@ abstract class Digest # # Digest::SHA1.base64digest("foo") # => "C+7Hteo/D9vJXQ3UfzxbwnXaijM=" # ``` - def base64digest(data) : String + def base64digest(data : String) : String base64digest &.update(data) end From bd5bd9251c05c8ebe3e7324679c3561728a711f2 Mon Sep 17 00:00:00 2001 From: Troy Sornson Date: Wed, 23 Apr 2025 21:40:26 -0600 Subject: [PATCH 2/3] Review Comments --- src/digest/adler32.cr | 4 ++-- src/digest/digest.cr | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/digest/adler32.cr b/src/digest/adler32.cr index 49d314d617af..9d0f9a0ed00f 100644 --- a/src/digest/adler32.cr +++ b/src/digest/adler32.cr @@ -17,11 +17,11 @@ class Digest::Adler32 < ::Digest LibZ.adler32(0, nil, 0).to_u32 end - def self.checksum(data : Slice(UInt8) | String) : UInt32 + def self.checksum(data) : UInt32 update(data, initial) end - def self.update(data : Slice(UInt8) | String, adler32 : UInt32) : UInt32 + def self.update(data, adler32 : UInt32) : UInt32 slice = data.to_slice LibZ.adler32(adler32, slice, slice.size).to_u32 end diff --git a/src/digest/digest.cr b/src/digest/digest.cr index 896b01b87f3d..c55d2a84ead1 100644 --- a/src/digest/digest.cr +++ b/src/digest/digest.cr @@ -21,7 +21,7 @@ abstract class Digest # The modules adds convenient class methods as `Digest::MD5.digest`, `Digest::MD5.hexdigest`. module ClassMethods # Returns the hash of *data*. *data* must respond to `#to_slice`. - def digest(data : String) : Bytes + def digest(data) : Bytes digest do |ctx| ctx.update(data.to_slice) end @@ -85,7 +85,7 @@ abstract class Digest # # Digest::SHA1.base64digest("foo") # => "C+7Hteo/D9vJXQ3UfzxbwnXaijM=" # ``` - def base64digest(data : String) : String + def base64digest(data) : String base64digest &.update(data) end From dcb6a9258654f18bbefa910eb9f127fbaddf70dc Mon Sep 17 00:00:00 2001 From: Troy Sornson Date: Sat, 26 Apr 2025 21:47:45 -0600 Subject: [PATCH 3/3] Remove overly restrictive restrictions --- src/digest/crc32.cr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/digest/crc32.cr b/src/digest/crc32.cr index 807ba630e19f..a7de64a5041b 100644 --- a/src/digest/crc32.cr +++ b/src/digest/crc32.cr @@ -17,11 +17,11 @@ class Digest::CRC32 < ::Digest LibZ.crc32(0, nil, 0).to_u32 end - def self.checksum(data : String) : UInt32 + def self.checksum(data) : UInt32 update(data, initial) end - def self.update(data : Slice(UInt8) | String, crc32 : UInt32) : UInt32 + def self.update(data, crc32 : UInt32) : UInt32 slice = data.to_slice LibZ.crc32(crc32, slice, slice.size).to_u32 end