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