We’ll warn if that kind of cast is a tautology, right? That leaves only the dynamic casts, which can’t be assumed exhaustive.
~Robert Widmann > On May 9, 2017, at 2:13 PM, Jordan Rose <jordan_r...@apple.com> wrote: > > 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 >> <mailto: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