Control-Flow Analysis: Reuse pseudo-value information for unused expression analysis
This commit is contained in:
@@ -25,7 +25,7 @@ fun f(): Unit {
|
||||
<error>x</error> in 1..2
|
||||
|
||||
val y : Boolean? = true
|
||||
false || <error>y</error>
|
||||
<error>y</error> && true
|
||||
<error>y</error> && <error>1</error>
|
||||
<warning>false || <error>y</error></warning>
|
||||
<warning><error>y</error> && true</warning>
|
||||
<warning><error>y</error> && <error>1</error></warning>
|
||||
}
|
||||
@@ -66,5 +66,5 @@ fun Int.foo() = this
|
||||
val c = Command()
|
||||
c<warning>?.</warning>equals2(null)
|
||||
|
||||
if (command == null) 1
|
||||
if (command == null) <warning>1</warning>
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ fun blockReturnValueTypeMatch() : Int {return 1}
|
||||
fun blockReturnValueTypeMismatchUnit() : Int {return <error>Unit</error>}
|
||||
|
||||
fun blockAndAndMismatch() : Int {
|
||||
true && false
|
||||
<warning>true && false</warning>
|
||||
<error>}</error>
|
||||
fun blockAndAndMismatch1() : Int {
|
||||
return <error>true && false</error>
|
||||
@@ -52,7 +52,7 @@ fun blockAndAndMismatch2() : Int {
|
||||
}
|
||||
|
||||
fun blockAndAndMismatch3() : Int {
|
||||
true || false
|
||||
<warning>true || false</warning>
|
||||
<error>}</error>
|
||||
fun blockAndAndMismatch4() : Int {
|
||||
return <error>true || false</error>
|
||||
@@ -86,18 +86,18 @@ fun blockReturnValueTypeMatch6() : Int {
|
||||
}
|
||||
fun blockReturnValueTypeMatch7() : Int {
|
||||
if (1 > 2)
|
||||
1.0
|
||||
else 2.0
|
||||
<warning>1.0</warning>
|
||||
else <warning>2.0</warning>
|
||||
<error>}</error>
|
||||
fun blockReturnValueTypeMatch8() : Int {
|
||||
if (1 > 2)
|
||||
1.0
|
||||
else 2.0
|
||||
<warning>1.0</warning>
|
||||
else <warning>2.0</warning>
|
||||
return 1
|
||||
}
|
||||
fun blockReturnValueTypeMatch9() : Int {
|
||||
if (1 > 2)
|
||||
1.0
|
||||
<warning>1.0</warning>
|
||||
<error>}</error>
|
||||
fun blockReturnValueTypeMatch10() : Int {
|
||||
return <error>if (1 > 2)
|
||||
@@ -105,7 +105,7 @@ fun blockReturnValueTypeMatch10() : Int {
|
||||
}
|
||||
fun blockReturnValueTypeMatch11() : Int {
|
||||
if (1 > 2)
|
||||
else 1.0
|
||||
else <warning>1.0</warning>
|
||||
<error>}</error>
|
||||
fun blockReturnValueTypeMatch12() : Int {
|
||||
if (1 > 2)
|
||||
|
||||
@@ -6,9 +6,9 @@ class Dup {
|
||||
|
||||
class A() {
|
||||
fun foo() : Unit {
|
||||
this@A
|
||||
<warning>this@A</warning>
|
||||
this<error>@a</error>
|
||||
this
|
||||
<warning>this</warning>
|
||||
}
|
||||
|
||||
val x = this@A.foo()
|
||||
|
||||
@@ -4,15 +4,15 @@ fun foo() : Int {
|
||||
val s = ""
|
||||
val x = 1
|
||||
when (x) {
|
||||
is <error>String</error> -> 1
|
||||
!is Int -> 1
|
||||
is Any<warning>?</warning> -> 1
|
||||
<error>s</error> -> 1
|
||||
1 -> 1
|
||||
1 + <error>a</error> -> 1
|
||||
in 1..<error>a</error> -> 1
|
||||
!in 1..<error>a</error> -> 1
|
||||
else -> 1
|
||||
is <error>String</error> -> <warning>1</warning>
|
||||
!is Int -> <warning>1</warning>
|
||||
is Any<warning>?</warning> -> <warning>1</warning>
|
||||
<error>s</error> -> <warning>1</warning>
|
||||
1 -> <warning>1</warning>
|
||||
1 + <error>a</error> -> <warning>1</warning>
|
||||
in 1..<error>a</error> -> <warning>1</warning>
|
||||
!in 1..<error>a</error> -> <warning>1</warning>
|
||||
else -> <warning>1</warning>
|
||||
}
|
||||
|
||||
return 0
|
||||
@@ -25,21 +25,21 @@ fun test() {
|
||||
val s = "";
|
||||
|
||||
when (x) {
|
||||
<error>s</error> -> 1
|
||||
<error>""</error> -> 1
|
||||
x -> 1
|
||||
1 -> 1
|
||||
else -> 1
|
||||
<error>s</error> -> <warning>1</warning>
|
||||
<error>""</error> -> <warning>1</warning>
|
||||
x -> <warning>1</warning>
|
||||
1 -> <warning>1</warning>
|
||||
else -> <warning>1</warning>
|
||||
}
|
||||
|
||||
val z = 1
|
||||
|
||||
when (z) {
|
||||
<error>else</error> -> 1
|
||||
<error>else</error> -> <warning>1</warning>
|
||||
<warning>1 -> 2</warning>
|
||||
}
|
||||
|
||||
when (z) {
|
||||
else -> 1
|
||||
when (<warning>z</warning>) {
|
||||
else -> <warning>1</warning>
|
||||
}
|
||||
}
|
||||
@@ -6,5 +6,5 @@ fun Any.equals(other : Any?) : Boolean = this === other
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val command = parse("")
|
||||
if (command == null) 1 // error on this line, but must be OK
|
||||
if (command == null) <warning>1</warning> // error on this line, but must be OK
|
||||
}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
// "Suppress 'UNUSED_EXPRESSION' for statement " "true"
|
||||
|
||||
fun foo() {
|
||||
val a = 1
|
||||
[suppress("UNUSED_EXPRESSION")]
|
||||
a
|
||||
}
|
||||
|
||||
val a = 1
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
// "Suppress 'UNUSED_EXPRESSION' for statement " "true"
|
||||
|
||||
fun foo() {
|
||||
val a = 1
|
||||
a
|
||||
}
|
||||
|
||||
val a = 1
|
||||
}
|
||||
Reference in New Issue
Block a user