Files
swift-mirror/test/stmt/rdar40400251.swift
Pavel Yaskevich 2b78e16224 [SpaceEngine] Improve total search space size estimation
In some situations it is possible to determine that a particular
associated value is completely covered by a given `switch` statement
before running main checker algorithm, so let's not include sizes
of such cases into "total" search space size estimate.

Resolves: rdar://problem/40400251
2018-07-11 11:13:12 -07:00

38 lines
788 B
Swift

// RUN: %target-typecheck-verify-swift
enum E1 {
case v1
case v2
case v3
case v4
case v5
case v6
indirect case v7(E1)
}
enum E2 {
case foo((E1, E1, E1)) // total size of this case is 7 ^ 3 + 1
case bar(E1)
case baz
}
func foo(_ e: E2) {
switch e {
// expected-error@-1 {{switch must be exhaustive}}
// expected-note@-2 {{add missing case: '.bar(_)'}}
case .foo(let tuple): break // expected-warning {{immutable value 'tuple' was never used; consider replacing with '_' or removing it}}
case .baz: break
}
}
func bar(_ e: E2) {
switch e {
// expected-error@-1 {{switch must be exhaustive}}
// expected-note@-2 {{add missing case: '.bar(_)'}}
// expected-note@-3 {{add missing case: '.baz'}}
case .foo((_, _, _)): break
}
}