mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
We warn like this:
t.swift:3:12: warning: 'let' pattern has no effect; sub-pattern didn't bind any variables
case let .Bar: println("bar")
^~~ ~~~~
Swift SVN r27747
111 lines
1.9 KiB
Swift
111 lines
1.9 KiB
Swift
// RUN: %target-swift-frontend -emit-sil %s -o /dev/null -verify
|
|
|
|
func testUnreachableAfterReturn() -> Int {
|
|
var x: Int = 3;
|
|
return x;
|
|
x++ //expected-warning {{code after 'return' will never be executed}}
|
|
}
|
|
|
|
func testUnreachableAfterIfReturn(a: Bool) -> Int {
|
|
if a {
|
|
return 1
|
|
} else {
|
|
return 0
|
|
}
|
|
var i: Int = testUnreachableAfterReturn() // expected-warning {{will never be executed}}
|
|
}
|
|
|
|
func testUnreachableForAfterContinue(b: Bool) {
|
|
for (var i:Int = 0; i<10; i++) {
|
|
var y: Int = 300;
|
|
y++;
|
|
if b {
|
|
break;
|
|
}
|
|
continue;
|
|
y--; // expected-warning {{code after 'continue' will never be executed}}
|
|
}
|
|
}
|
|
|
|
func testUnreachableWhileAfterContinue(b: Bool) {
|
|
var i:Int = 0;
|
|
while (i<10) {
|
|
var y: Int = 300;
|
|
y++;
|
|
if b {
|
|
break;
|
|
}
|
|
continue;
|
|
i++; // expected-warning {{will never be executed}}
|
|
}
|
|
}
|
|
|
|
func testBreakAndContinue() {
|
|
var i = 0;
|
|
var m = 0;
|
|
for (i = 0; i < 10; ++i) {
|
|
m++
|
|
if m == 15 {
|
|
break
|
|
} else {
|
|
continue
|
|
}
|
|
m++ // expected-warning {{will never be executed}}
|
|
}
|
|
}
|
|
|
|
|
|
// <rdar://problem/20253447> `case let Case` without bindings incorrectly matches other cases
|
|
enum Tree {
|
|
case Leaf(Int)
|
|
case Branch(Int)
|
|
}
|
|
|
|
func testUnreachableCase1(a : Tree) {
|
|
switch a {
|
|
case let Leaf:
|
|
return
|
|
case .Branch(_): // expected-warning {{case will never be executed}}
|
|
return
|
|
}
|
|
}
|
|
|
|
func testUnreachableCase2(a : Tree) {
|
|
switch a {
|
|
case let Leaf:
|
|
fallthrough
|
|
case .Branch(_):
|
|
return
|
|
}
|
|
}
|
|
|
|
func testUnreachableCase3(a : Tree) {
|
|
switch a {
|
|
case _:
|
|
break
|
|
case .Branch(_): // expected-warning {{case will never be executed}}
|
|
return
|
|
}
|
|
}
|
|
|
|
func testUnreachableCase4(a : Tree) {
|
|
switch a {
|
|
case .Leaf(_):
|
|
return
|
|
case .Branch(_):
|
|
return
|
|
}
|
|
}
|
|
|
|
func testUnreachableCase5(a : Tree) {
|
|
switch a {
|
|
case _:
|
|
break
|
|
default: // expected-warning {{default will never be executed}}
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
|