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!