Hey Charles,

Thanks for going through this with me :)

I'm not sure whether or not this is a compiler bug (that's partially why I 
posted it here), although I have the feeling that *something* is definitely 
wrong.

Funnily enough, the following code shows 3 compiler warnings which are 
incorrect:

private func handleLocalAuthenticationError(_ error: LAError) {
    switch error.code {
    case .userCancel, .appCancel, .systemCancel:
        print(".userCancel, .appCancel, .systemCancel")
    case .authenticationFailed:
        print(".authenticationFailed")
    case .passcodeNotSet:
        print(".passcodeNotSet")
    case .biometryNotEnrolled, .touchIDNotEnrolled:             // Compiler: 
Case will never be executed
        print(".biometryNotEnrolled, .touchIDNotEnrolled")
    case .biometryNotAvailable, .touchIDNotAvailable:           // Compiler: 
Case will never be executed
        print(".biometryNotAvailable, .touchIDNotAvailable")
    case .biometryLockout, .touchIDLockout:                     // Compiler: 
Case will never be executed
        print(".biometryLockout, .touchIDLockout")
    case .userFallback:
        print(".userFallback")
    case .invalidContext:
        print(".invalidContext")
    case .notInteractive:
        print(".notInteractive")
    }
}

let error = LAError(.touchIDLockout)
handleLocalAuthenticationError(error)

When you run it in a playground, you can see that the case *gets* executed.

- Dennis

> On Nov 5, 2017, at 7:13 PM, Charles Srstka <cocoa...@charlessoft.com> wrote:
> 
>> On Nov 5, 2017, at 10:39 AM, Dennis Weissmann <den...@dennisweissmann.me 
>> <mailto:den...@dennisweissmann.me>> wrote:
>> 
>>> You can delete the default case here, and your switch will still be 
>>> exhaustive
>> That's exactly my problem! It is *not*.
>> 
>> When I delete the default clause, the compiler warns that the switch is not 
>> exhaustive and fixits suggest to add the "missing" deprecated cases.
>> 
>> - Dennis
> 
> Hi Dennis,
> 
> Ah, I see—although the switch should be considered exhaustive since you have 
> covered all the possible cases, the compiler is claiming that it is not. I 
> would probably consider this to be a compiler bug. Have you considered filing 
> a report at bugs.swift.org <http://bugs.swift.org/>?
> 
> Charles
> 

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

Reply via email to