on Sun Nov 27 2016, Slava Pestov <swift-dev-AT-swift.org> wrote: >> On Nov 27, 2016, at 4:32 PM, David Sweeris via swift-dev >> <swift-dev@swift.org> wrote: >> >>> >>> On Nov 26, 2016, at 5:25 PM, Robert Widmann via swift-dev >>> <swift-dev@swift.org > <mailto:swift-dev@swift.org>> wrote: >>> > >>> Hello all, >>> >>> I’ve seen and been a part of a number of conversations recently where talk >>> of planning for “resilient enums”, or even just authors that ship >>> frameworks that will eventually offer a binary option that export >>> enum-based APIs. The consensus seems to be that the only safe way to deal >>> with this situation is to always cover a `switch` statement with a default, >>> regardless of whether the totality checker thinks you’ve covered all cases. >>> Currently, the compiler warns when this is the case, as in stdlib >>> >>> extension ProcessTerminationStatus { >>> var isSwiftTrap: Bool { >>> switch self { >>> case .exit(_): >>> return false >>> case .signal(let signal): >>> return CInt(signal) == SIGILL || CInt(signal) == SIGTRAP >>> default: >>> // This default case is needed for standard library builds where >>> // resilience is enabled >>> return false >>> } >>> } >>> } >>> >>> I think this warning doesn’t actually serve a purpose and I’d like to >>> remove it, or at the very > least curb it. Currently, I see three paths forward: >>> >>> 1) Do nothing. >>> 2) Completely remove the diagnostic >>> 3) Only emit the diagnostic when the case-tree is switching over enum(s) >>> declared inside the > current module. >> >> Has the “resilient enum” thing been finalized, or is this kind of code just >> a preventative > measure? >> >> Also, if “resilience” is a compiler flag, there's a fourth option: Disable >> the warning on builds > that have “resilience” enabled. > > The warning is already gone (and the default cause is required) when > the standard library and overlays are built with resilience > enabled. The issue is that resilience is off by default. > > I agree the warning is annoying; we should figure out something.
There should also be a way to write code that will compile without warnings whether or not you have resilience enabled. ;-) -- -Dave _______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev