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.
I’ve filed SR-3278 <https://bugs.swift.org/browse/SR-3278> to track this as
well.
Thanks,
~Robert Widmann
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev