Mark expressions for correct recognition by "unreachable code"

This commit is contained in:
Andrey Breslav
2013-12-03 21:00:08 +04:00
parent 6a4043c9a0
commit 11fcd64949
15 changed files with 155 additions and 34 deletions
@@ -137,9 +137,9 @@ fun tf() : Int {
}
fun failtest(<!UNUSED_PARAMETER!>a<!> : Int) : Int {
if (fail() || <!UNREACHABLE_CODE!>true<!>) {
if (fail() || <!UNREACHABLE_CODE!>true<!>) <!UNREACHABLE_CODE!>{
}
}<!>
<!UNREACHABLE_CODE!>return 1<!>
}
@@ -0,0 +1,55 @@
fun foo(<!UNUSED_PARAMETER!>a<!>: Any) {}
fun bar(<!UNUSED_PARAMETER!>a<!>: Any, <!UNUSED_PARAMETER!>b<!>: Any) {}
fun test(arr: Array<Int>) {
while (true) {
<!UNREACHABLE_CODE!>foo<!>(break)
}
while (true) {
<!UNREACHABLE_CODE!>bar<!>(arr, break)
}
while (true) {
<!UNREACHABLE_CODE!>arr[break]<!>
}
while (true) {
<!UNREACHABLE_CODE!>arr[1]<!> = break
}
while (true) {
break
<!UNREACHABLE_CODE!>foo(1)<!>
}
while (true) {
var <!UNUSED_VARIABLE!>x<!> = 1
break
<!UNREACHABLE_CODE!>x = 2<!>
}
while (true) {
var <!UNUSED_VARIABLE!>x<!> = 1
<!UNREACHABLE_CODE!>x = break<!>
}
// TODO: bug, should be fixed in CFA
while (true) {
if (1 > 2 && break && 2 > 3) {
}
}
// TODO: bug, should be fixed in CFA
while (true) {
if (1 > 2 || break || 2 > 3) {
}
}
while (true) {
<!USELESS_ELVIS!>break<!> ?: <!UNREACHABLE_CODE!>null<!>
}
}
@@ -7,5 +7,4 @@ fun main(args: Array<String>) {
}
}
// callback is unused due to KT-4233
fun test<R>(<!UNUSED_PARAMETER!>callback<!>: (R) -> Unit):Unit = <!UNREACHABLE_CODE!>callback(null!!)<!>
fun test<R>(callback: (R) -> Unit):Unit = <!UNREACHABLE_CODE!>callback<!>(null!!)
@@ -9,9 +9,9 @@ fun test(a: Int) {
bar(a, <!NULL_FOR_NONNULL_TYPE!>null<!>)
}
fun test1(a: Int) {
<!UNREACHABLE_CODE!>foo(a, throw Exception())<!>
<!UNREACHABLE_CODE!>foo<!>(a, throw Exception())
}
fun test2(a: Int) {
<!UNREACHABLE_CODE!>bar(a, throw Exception())<!>
<!UNREACHABLE_CODE!>bar<!>(a, throw Exception())
}