Fix false "useless cast" when target type is flexible

#KT-17820 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2017-05-15 11:24:05 +03:00
parent a8f1e32dec
commit ac8fbce249
5 changed files with 50 additions and 4 deletions
@@ -0,0 +1,26 @@
// FILE: Foo.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class Foo {
static Foo create() { return null; }
@Nullable
static Foo createN() { return null; }
@NotNull
static Foo createNN() { return null; }
}
// FILE: sample.kt
fun test() {
Foo.create() as Foo
Foo.createN() as Foo
Foo.createNN() <!USELESS_CAST!>as Foo<!>
Foo.create() <!USELESS_CAST!>as Foo?<!>
Foo.createN() <!USELESS_CAST!>as Foo?<!>
Foo.createNN() <!USELESS_CAST!>as Foo?<!>
}
@@ -0,0 +1,15 @@
package
public fun test(): kotlin.Unit
public open class Foo {
public constructor Foo()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public/*package*/ open fun create(): Foo!
@org.jetbrains.annotations.Nullable public/*package*/ open fun createN(): Foo?
@org.jetbrains.annotations.NotNull public/*package*/ open fun createNN(): Foo
}