I either don't understand or can't reproduce the issue. This code:

> class Box {
>       let value: Int
>       
>       init(value: Int) {
>               self.value = value
>       }
> }
> 
> let test: UInt32 = 4
> let box = Box(value: test)

does not compile ("foo.swift:10:22: error: cannot convert value of type 
'UInt32' to expected argument type 'Int'").

Félix

> Le 6 janv. 2016 à 13:17:03, James Campbell <ja...@supmenow.com> a écrit :
> 
> protocol Box: CustomStringConvertible, CustomDebugStringConvertible {
> 
>     
>     typealias FloatLiteralType = Double
> 
>     typealias IntegerLiteralType = Int
> 
>     typealias BoxType = Any
> 
>     
>     var value: BoxType { get set }
> 
>     
>     init()
> 
>     init(_ value: BoxType)
> 
> }
> 
> extension Box where Self.BoxType == Double {
> 
>     
>     init(_ value: Double) {
> 
>         
>         self.init()
> 
>         self.value = value
> 
>     }
> 
>     
>     init(_ value: Int) {
> 
>         self.init()
> 
>         self.value = Double(value)
> 
>     }
> 
>     
>     init(_ value: UInt32) {
> 
>         self.init()
> 
>         self.value = Double(value)
> 
>     }
> 
> }
> 
> 
> 
> 
> 
> Without that last method, Swift tries to give the UInt32 to the Int version 
> of the method which isn't safe in my eyes and I would have expected a 
> compiler error.
> 
> 
> On Wed, Jan 6, 2016 at 6:14 PM, Félix Cloutier <felix...@yahoo.ca 
> <mailto:felix...@yahoo.ca>> wrote:
> I don't understand. Can you show a code example?
> 
> Félix
> 
>> Le 6 janv. 2016 à 13:02:43, James Campbell via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> a écrit :
>> 
>> I have a overloaded method for a protocol that takes an Int or double.
>> 
>> I have an issue with swift calling the Int version when passing in a UInt32 
>> . Ideally I would prefer the compiler to detect I am about to do something 
>> which will cause an overflow and throw an error.
>> 
>> I would then have to explicitly add a overloaded UInt32 method or explicitly 
>> convert it to Int like so "Int(uintVariable)".
>> 
>> -- 
>>  Wizard
>> ja...@supmenow.com <mailto:ja...@supmenow.com>
>> +44 7523 279 698 <tel:%2B44%207523%20279%20698> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> 
> 
> 
> -- 
>  Wizard
> ja...@supmenow.com <mailto:ja...@supmenow.com>
> +44 7523 279 698

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to