Re: [swift-dev] New warning message while switching on an enum

2017-05-09 Thread Jordan Rose via swift-dev
I think they'll all be IsPatterns, which means you can look at the CheckedCastKind. Jordan > On May 9, 2017, at 13:54, Robert Widmann wrote: > > Is there a catch-all to query for such casts (sorry, I'm away from my > computer at the moment). > > ~Robert Widmann > > 2017/05/09 16:40、Jordan

Re: [swift-dev] New warning message while switching on an enum

2017-05-09 Thread Robert Widmann via swift-dev
Is there a catch-all to query for such casts (sorry, I'm away from my computer at the moment). ~Robert Widmann 2017/05/09 16:40、Jordan Rose のメッセージ: > I think any bridging conversion or upcast would count. > > enum Foo { > case foo(NSFileManager) > case bar(NSString) > case baz(Int) > }

Re: [swift-dev] New warning message while switching on an enum

2017-05-09 Thread Jordan Rose via swift-dev
I think any bridging conversion or upcast would count. enum Foo { case foo(NSFileManager) case bar(NSString) case baz(Int) } func test(x: Foo) { switch x { case .foo(let obj as NSObject): print("totally legal") case .bar(let obj as String): print("also cool") case .baz(let ob

Re: [swift-dev] New warning message while switching on an enum

2017-05-09 Thread Robert Widmann via swift-dev
Right. I guess I should have asked: Are there any other kinds of patterns we consider exhaustive that have this structure? ~Robert Widmann > On May 9, 2017, at 2:23 PM, Jordan Rose wrote: > > "as NSError" isn't a tautology, though—the original type is 'Error'. > Additionally, the presence

Re: [swift-dev] New warning message while switching on an enum

2017-05-09 Thread Jordan Rose via swift-dev
"as NSError" isn't a tautology, though—the original type is 'Error'. Additionally, the presence or absence of a warning shouldn't affect exhaustiveness analysis, which is currently an error when you get it wrong. Warnings are things you can build with and fix later. Jordan > On May 9, 2017, a

Re: [swift-dev] New warning message while switching on an enum

2017-05-09 Thread Robert Widmann via swift-dev
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 wrote: > > It's neither a variable binding nor an expression pattern, right? It has to > be compared against

Re: [swift-dev] New warning message while switching on an enum

2017-05-09 Thread Jordan Rose via swift-dev
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 Widman

Re: [swift-dev] New warning message while switching on an enum

2017-05-09 Thread Robert Widmann via swift-dev
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 wrote: > > That looks like a bug to me, since of course the first pattern won't always

Re: [swift-dev] New warning message while switching on an enum

2017-05-09 Thread Jordan Rose via swift-dev
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 . Thanks for catching this! Jordan > On May 9,

[swift-dev] New warning message while switching on an enum

2017-05-09 Thread Pushkar N Kulkarni via swift-dev
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 prev