Swift switch over 12 case enum tuple compiles despite no exhaustive coverage
Originator: | chilvman | ||
Number: | rdar://37749943 | Date Originated: | 21/02/2018 |
Status: | Open | Resolved: | |
Product: | Developer Tools | Product Version: | Xcode 9.2 |
Classification: | Bug | Reproducible: | Always |
Summary: Given an enum with 12 or more cases When switching over a pair of instances of this enum in a tuple in the pattern case (a, a): … case (z, z): case (a, _): case (y, _): And the case (z, _) is missing Then the compiler should show an error because the switch is not exhaustive. Steps to Reproduce: enum Demo { case value1 case value2 case value3 case value4 case value5 case value6 case value7 case value8 case value9 case value10 case value11 case value12 } extension Demo { static func demoSwitch(_ lhs: Demo, _ rhs: Demo) -> Bool { switch (lhs, rhs) { //matching case (.value1, .value1): return true case (.value2, .value2): return true case (.value3, .value3): return true case (.value4, .value4): return true case (.value5, .value5): return true case (.value6, .value6): return true case (.value7, .value7): return true case (.value8, .value8): return true case (.value9, .value9): return true case (.value10, .value10): return true case (.value11, .value11): return true case (.value12, .value12): return true //not matching //case (.value1, _): return false case (.value2, _): return false case (.value3, _): return false case (.value4, _): return false case (.value5, _): return false case (.value6, _): return false case (.value7, _): return false case (.value8, _): return false case (.value9, _): return false case (.value10, _): return false case (.value11, _): return false case (.value12, _): return false } } } Expected Results: The compiler should show an error because the switch is not exhaustive. Actual Results: The code compiles and returns false. Version/Build: Xcode Version 9.2 (9C40b) & Xcode 9.3 beta 3 (9Q117m)
Comments
Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!