swiftlang/swift

[SR-8213] Compiler may indicate "case will never be executed" even if it is unavoidable to execute the case in switch statement.

Ouverte

#50 745 ouverte le 10 juil. 2018

 (14 commentaires) (0 réaction) (0 personne assignée)Swift (10 719 forks)batch import
SILGenbugcompilerdiagnostics qualitygood first issuepattern matchingpatternsstatementsswift 5.9switchswitch casestype checker

Métriques du dépôt

Stars
 (69 989 étoiles)
Métriques de merge PR
 (Métriques PR en attente)

Description

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

Guide contributeur