swiftlang/swift
[SR-8213] Compiler may indicate "case will never be executed" even if it is unavoidable to execute the case in switch statement.
开放
#50,745 创建于 2018年7月10日
SILGenbugcompilerdiagnostics qualitygood first issuepattern matchingpatternsstatementsswift 5.9switchswitch casestype checker
仓库指标
- 星标
- (69,989 个星标)
- PR 合并指标
- (平均合并 8天 17小时) (30 天内合并 510 个 PR)
描述
| 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