This is because it matches .Xcase
Basically your switch will be the same:
switch x {
case .X:
println("x or y")
case .Y where false:
println("x or y")
case .Z:
println("z")
default:
println("default")
break
}
To have them in the same thing case, you probably have to do something like this:
let x = XYZ.X
var condition = false
if x == .X || x == .Y {
condition = true
}
switch x {
case _ where condition:
println("x or y")
case .Z:
println("z")
default:
println("default")
break
}