> On Sep 14, 2016, at 10:25 AM, Ted Kremenek via swift-dev 
> <swift-dev@swift.org> wrote:
> 
> Hi everyone,
> 
> Joe Shajrawi nominated an optimizer fix for Swift 3.0.1 where the optimizer 
> was crashing due to duplicate conditions in aswitchstatement:
> 
> https://bugs.swift.org/browse/SR-2512 <https://bugs.swift.org/browse/SR-2512>
> https://github.com/apple/swift/pull/4747 
> <https://github.com/apple/swift/pull/4747>
> Here’s an example:
> 
> public enum DemoEnum {
>     case firstCase
>     case secondCase
> 
>     public static func performSwitch(with value: Int) -> DemoEnum {
>         switch value {
>         case 0:
>             return DemoEnum.firstCase
>         case 0:
>             return DemoEnum.firstCase
>         default:
>             return DemoEnum.secondCase
>         }
>     }
> }
> I can’t remember why the frontend even accepts this code. Is this intended, 
> or just a defect in the compiler’s validity checking ofswitch statements?
> 
> 

It would be legitimate with, say, a condition on the first case.  But yeah, 
this is undoubtedly just a defect in the compiler's checking.

Recall that a switch in Swift doesn't necessarily compile to a primitive 
switch; it's more like a series of ifs that's a bit more straightforward to 
optimize matching for.  So the validity checking you'd expect as a matter of 
course in C doesn't just fall out automatically.

Also, of course, the compiler does not have primitive knowledge of Int or how 
it forms literals.

John.
> Thanks,
> Ted
> 
> _______________________________________________
> swift-dev mailing list
> swift-dev@swift.org
> https://lists.swift.org/mailman/listinfo/swift-dev

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

Reply via email to