Fix false "useless cast" when target type is flexible
#KT-17820 Fixed
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user