It's neither a variable binding nor an expression pattern, right? It has to be 
compared against the original type to know whether it's exhaustive or not. 
(Consider "let error as NSError" in a catch clause, which should be considered 
exhaustive.)

Jordan

> On May 9, 2017, at 11:12, Robert Widmann <devteam.cod...@gmail.com> wrote:
> 
> It’s mine, yep.  It looks like it’s classifying the cast in the first pattern 
> as a variable binding instead of an expression pattern.  I’ll push a fix 
> later.
> 
> Thanks!
> 
>> On May 9, 2017, at 1:52 PM, Jordan Rose <jordan_r...@apple.com 
>> <mailto:jordan_r...@apple.com>> wrote:
>> 
>> That looks like a bug to me, since of course the first pattern won't always 
>> match. I suspect this is Robert's work on trying to make the exhaustive 
>> checks better, https://github.com/apple/swift/pull/8908 
>> <https://github.com/apple/swift/pull/8908>. Thanks for catching this!
>> 
>> Jordan
>> 
>> 
>>> On May 9, 2017, at 07:09, Pushkar N Kulkarni via swift-dev 
>>> <swift-dev@swift.org <mailto:swift-dev@swift.org>> wrote:
>>> 
>>> Hi there, 
>>> 
>>> I see a new warning message for switch statements on enums, like this one: 
>>> 
>>> enum Test {
>>>     case one(Any)
>>>     case two
>>> }
>>> 
>>> let x: Test = .one("One")
>>> switch x {
>>>     case .one(let s as String): print(s)
>>>     case .one: break
>>>     case .two: break
>>> }
>>> 
>>> enum.swift:9:10: warning: case is already handled by previous patterns; 
>>> consider removing it
>>>     case .one: break 
>>> 
>>> 
>>> I do not see this warning with the 04-24 dev snapshot. 
>>> 
>>> The warning goes away with the use of the wildcard pattern in the second 
>>> case:
>>> 
>>> switch x {
>>>     case .one(let s as String): print(s)
>>>     case .one(_): break
>>>     case .two: break
>>> }
>>> 
>>> 
>>> I am wondering if this change is intentional, though it does make sense to 
>>> me. Can someone please point me to the related commit?
>>> 
>>> Thanks in advance!
>>> 
>>> Pushkar N Kulkarni,
>>> IBM Runtimes
>>> 
>>> Simplicity is prerequisite for reliability - Edsger W. Dijkstra
>>> 
>>> 
>>> _______________________________________________
>>> swift-dev mailing list
>>> swift-dev@swift.org <mailto:swift-dev@swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-dev 
>>> <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