Hi all, A little while back, I added an error to the Swift 4.1 compiler that complains if one tries to use conditional conformances, along with a flag “-enable-experimental-conditional-conformances” to enable the feature. We did this because we haven’t implemented the complete proposal yet; specifically, we don’t yet handle dynamic casting that involves conditional conformances, and won’t in Swift 4.1.
I’d like to take away the "-enable-experimental-conditional-conformances” flag and always allow conditional conformances in Swift 4.1, because the changes in the standard library that make use of conditional conformances can force users to change their code *to themselves use conditional conformances*. Specifically, if they had code like this: extension MutableSlice : P { } extension MutableBidirectionalSlice : P { } // … they’ll get an error about overlapping conformances, and need to do something like the following to fix the issue: extension Slice: P where Base: MutableCollection { } which is way more elegant, but would require passing "-enable-experimental-conditional-conformances”. That seems… unfortunate… given that we’re forcing them to use this feature. My proposal is, specifically: Allow conditional conformances to be used in Swift 4.1 (no flag required) Drop the -enable-experimental-conditional-conformances flag entirely Add a runtime warning when an attempt to dynamic cast fails due to a conditional conformance, so at least users know what’s going on Thoughts? - Doug
_______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev