KT-2422 Invalid warning "Condition is always true"
#KT-2422 fixed
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package bar
|
||||
|
||||
class Test {
|
||||
val foo: Int? = null
|
||||
fun foo(o: Test) = foo == null && o.foo == null // ERROR warning: o.test == null is always true
|
||||
|
||||
fun bar(a: Test, b: Test) {
|
||||
if (a.foo != null) {
|
||||
useInt(<!TYPE_MISMATCH!>b.foo<!>)
|
||||
}
|
||||
if (a.foo != null) {
|
||||
useInt(<!TYPE_MISMATCH!>foo<!>)
|
||||
}
|
||||
if (this.foo != null) {
|
||||
useInt(foo)
|
||||
}
|
||||
if (foo != null) {
|
||||
useInt(this.foo)
|
||||
}
|
||||
}
|
||||
|
||||
fun useInt(i: Int) = i
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
//FILE: bar.kt
|
||||
package bar
|
||||
|
||||
val i: Int? = 2
|
||||
|
||||
//FILE: foo.kt
|
||||
package foo
|
||||
|
||||
val i: Int? = 1
|
||||
|
||||
class A(val i: Int?) {
|
||||
fun testUseFromClass() {
|
||||
if (foo.i != null) {
|
||||
useInt(<!TYPE_MISMATCH!>i<!>)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun testUseFromOtherPackage() {
|
||||
if (bar.i != null) {
|
||||
useInt(<!TYPE_MISMATCH!>i<!>)
|
||||
}
|
||||
}
|
||||
|
||||
fun useInt(i: Int) = i
|
||||
@@ -0,0 +1,36 @@
|
||||
package foo
|
||||
|
||||
class A(val i: Int?) {
|
||||
fun test1() {
|
||||
if (this@A.i != null) {
|
||||
useInt(this.i)
|
||||
useInt(i)
|
||||
}
|
||||
}
|
||||
|
||||
inner class B {
|
||||
fun test2() {
|
||||
if (i != null) {
|
||||
useInt(this@A.i)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun A.foo() {
|
||||
if (this@foo.i != null) {
|
||||
useInt(this.i)
|
||||
useInt(i)
|
||||
}
|
||||
}
|
||||
|
||||
fun test3() {
|
||||
useFunction {
|
||||
if(i != null) {
|
||||
useInt(this.i)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun useInt(i: Int) = i
|
||||
fun useFunction(f: A.() -> Unit) = f
|
||||
@@ -0,0 +1,39 @@
|
||||
package foo
|
||||
|
||||
class C(val i: Int?) {}
|
||||
|
||||
class A(val c: C) {
|
||||
fun test1() {
|
||||
if (this@A.c.i != null) {
|
||||
useInt(this.c.i)
|
||||
useInt(c.i)
|
||||
}
|
||||
}
|
||||
|
||||
inner class B {
|
||||
fun test2() {
|
||||
if (c.i != null) {
|
||||
useInt(this@A.c.i)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun A.foo() {
|
||||
if (this@foo.c.i != null) {
|
||||
useInt(this.c.i)
|
||||
useInt(c.i)
|
||||
}
|
||||
}
|
||||
|
||||
fun test3() {
|
||||
useFunction {
|
||||
if(c.i != null) {
|
||||
useInt(this.c.i)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun useInt(i: Int) = i
|
||||
fun useFunction(f: A.() -> Unit) = f
|
||||
|
||||
Reference in New Issue
Block a user