swiftlang/swift
GitHub で見る[SR-8213] Compiler may indicate "case will never be executed" even if it is unavoidable to execute the case in switch statement.
Open
#50,745 opened on 2018年7月10日
SILGenbugcompilerdiagnostics qualitygood first issuepattern matchingpatternsstatementsswift 5.9switchswitch casestype checker
説明
| Previous ID | SR-8213 |
| Radar | None |
| Original Reporter | @YOCKOW |
| Type | Bug |
-
OS: macOS, Ubuntu 16.04
-
Swift: 4.1.2, 4.2-DEVELOPMENT-SNAPSHOT-2018-07-08
| Votes | 0 |
| Component/s | Compiler |
| Labels | Bug, DiagnosticsQoI, StarterBug |
| Assignee | Gabriel Igliozzi (JIRA) |
| Priority | Medium |
md5: df5f44ab5b8a1d3c8ee6ed4a803d858c
is duplicated by:
- SR-11318 Incorrect "Case will never be executed" warning
Issue Description:
(As I commented on SR-8208,) The compiler shows a wrong warning, when the following code is compiled:
enum E {
case a // only one case
}
func f(_ e0:E, _ e1:E) {
switch (e0, e1) {
case (.a, _): print("e0 is .a") // -> No warning.
}
switch (e0, e1) {
case (.a, _), (_, .a): print("e0 or e1 is .a") // -> warning: case will never be executed
}
}
f(.a, .a)
Consideration
- The warning should be
case will be always executed(_, .a) will never match- ... and so on