Files
swift-mirror/test/SILGen/unreachable_code.swift
Chris Lattner a475a3326f implement <rdar://problem/19786845> Warn on "let" and "var" when no data is bound in a pattern
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
2015-04-26 04:38:13 +00:00

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
}
}