[FIR] Add CAST_NEVER_SUCCEEDS
This commit is contained in:
committed by
TeamCityServer
parent
4ca757446a
commit
2b5524b18f
@@ -1,14 +0,0 @@
|
||||
// Nothing can be cast to Nothing
|
||||
fun foo(x: String) {
|
||||
x as Nothing
|
||||
}
|
||||
|
||||
fun gav(y: String?) {
|
||||
y as Nothing
|
||||
}
|
||||
|
||||
// Only nullable can be cast to Nothing?
|
||||
fun bar(x: String, y: String?) {
|
||||
x as Nothing?
|
||||
y as Nothing?
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// Nothing can be cast to Nothing
|
||||
fun foo(x: String) {
|
||||
x <!CAST_NEVER_SUCCEEDS!>as<!> Nothing
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
typealias MyString = String
|
||||
|
||||
val x: MyString = ""
|
||||
val y = x as Any
|
||||
|
||||
interface Base
|
||||
class Derived : Base
|
||||
interface Other : Base
|
||||
typealias IBase = Base
|
||||
typealias IOther = Other
|
||||
|
||||
val ib: IBase = Derived()
|
||||
val d = ib as Derived
|
||||
val o = ib as Other
|
||||
val io = ib as IOther
|
||||
val s = d as String
|
||||
val ms = d as MyString
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
typealias MyString = String
|
||||
|
||||
val x: MyString = ""
|
||||
|
||||
+36
-36
@@ -1,51 +1,51 @@
|
||||
fun asCall() {
|
||||
1 <!USELESS_CAST!>as Int<!>
|
||||
1 as Byte
|
||||
1 as Short
|
||||
1 as Long
|
||||
1 as Char
|
||||
1 as Double
|
||||
1 as Float
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as<!> Byte
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as<!> Short
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as<!> Long
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as<!> Char
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as<!> Double
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as<!> Float
|
||||
|
||||
1.0 as Int
|
||||
1.0 as Byte
|
||||
1.0 as Short
|
||||
1.0 as Long
|
||||
1.0 as Char
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as<!> Int
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as<!> Byte
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as<!> Short
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as<!> Long
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as<!> Char
|
||||
1.0 <!USELESS_CAST!>as Double<!>
|
||||
1.0 as Float
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as<!> Float
|
||||
|
||||
1f as Int
|
||||
1f as Byte
|
||||
1f as Short
|
||||
1f as Long
|
||||
1f as Char
|
||||
1f as Double
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as<!> Int
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as<!> Byte
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as<!> Short
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as<!> Long
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as<!> Char
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as<!> Double
|
||||
1f <!USELESS_CAST!>as Float<!>
|
||||
}
|
||||
|
||||
fun asSafe() {
|
||||
1 as? Int
|
||||
1 as? Byte
|
||||
1 as? Short
|
||||
1 as? Long
|
||||
1 as? Char
|
||||
1 as? Double
|
||||
1 as? Float
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as?<!> Byte
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as?<!> Short
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as?<!> Long
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as?<!> Char
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as?<!> Double
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as?<!> Float
|
||||
|
||||
1.0 as? Int
|
||||
1.0 as? Byte
|
||||
1.0 as? Short
|
||||
1.0 as? Long
|
||||
1.0 as? Char
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as?<!> Int
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as?<!> Byte
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as?<!> Short
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as?<!> Long
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as?<!> Char
|
||||
1.0 as? Double
|
||||
1.0 as? Float
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as?<!> Float
|
||||
|
||||
1f as? Int
|
||||
1f as? Byte
|
||||
1f as? Short
|
||||
1f as? Long
|
||||
1f as? Char
|
||||
1f as? Double
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as?<!> Int
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as?<!> Byte
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as?<!> Short
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as?<!> Long
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as?<!> Char
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as?<!> Double
|
||||
1f as? Float
|
||||
}
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
// !DIAGNOSTICS: -PLATFORM_CLASS_MAPPED_TO_KOTLIN -USELESS_CAST
|
||||
import java.lang.String as JString
|
||||
import java.lang.CharSequence as JCS
|
||||
|
||||
fun test(
|
||||
s: String,
|
||||
js: JString,
|
||||
cs: CharSequence,
|
||||
jcs: JCS
|
||||
) {
|
||||
s as JString
|
||||
s as JCS
|
||||
s as CharSequence
|
||||
s as String
|
||||
|
||||
js as JString
|
||||
js as JCS
|
||||
js as CharSequence
|
||||
js as String
|
||||
|
||||
cs as JString
|
||||
cs as JCS
|
||||
cs as CharSequence
|
||||
cs as String
|
||||
|
||||
jcs as JString
|
||||
jcs as JCS
|
||||
jcs as CharSequence
|
||||
jcs as String
|
||||
|
||||
jcs as Int
|
||||
s as java.lang.Integer
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -PLATFORM_CLASS_MAPPED_TO_KOTLIN -USELESS_CAST
|
||||
import java.lang.String as JString
|
||||
import java.lang.CharSequence as JCS
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
// !DIAGNOSTICS: -PLATFORM_CLASS_MAPPED_TO_KOTLIN -UNUSED_PARAMETER -ABSTRACT_MEMBER_NOT_IMPLEMENTED -USELESS_CAST
|
||||
import java.lang.CharSequence as JCS
|
||||
|
||||
class JSub: JCS
|
||||
class Sub: CharSequence
|
||||
|
||||
fun test(
|
||||
s: Sub,
|
||||
js: JSub,
|
||||
cs: CharSequence,
|
||||
jcs: JCS
|
||||
) {
|
||||
// js as CharSequence // - this case is not supported due to limitation in PlatformToKotlinClassMap
|
||||
js as JCS
|
||||
|
||||
s as CharSequence
|
||||
s as JCS
|
||||
|
||||
js as Sub
|
||||
s as JSub
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -PLATFORM_CLASS_MAPPED_TO_KOTLIN -UNUSED_PARAMETER -ABSTRACT_MEMBER_NOT_IMPLEMENTED -USELESS_CAST
|
||||
import java.lang.CharSequence as JCS
|
||||
|
||||
|
||||
-34
@@ -1,34 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNCHECKED_CAST
|
||||
interface Trait1
|
||||
interface Trait2
|
||||
open class OClass1
|
||||
open class OClass2
|
||||
class FClass1
|
||||
class FClass2
|
||||
|
||||
fun <TP1: OClass1, TP2: OClass2> test(
|
||||
t1: Trait1,
|
||||
oc1: OClass1,
|
||||
fc1: FClass1,
|
||||
tp1: TP1
|
||||
) {
|
||||
t1 as Trait2
|
||||
t1 as OClass2
|
||||
t1 as FClass2
|
||||
t1 as TP2
|
||||
|
||||
oc1 as Trait2
|
||||
oc1 as OClass2
|
||||
oc1 as FClass2
|
||||
oc1 as TP2
|
||||
|
||||
fc1 as Trait2
|
||||
fc1 as OClass2
|
||||
fc1 as FClass2
|
||||
fc1 as TP2
|
||||
|
||||
tp1 as Trait2
|
||||
tp1 as OClass2
|
||||
tp1 as FClass2
|
||||
tp1 as TP2
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNCHECKED_CAST
|
||||
interface Trait1
|
||||
interface Trait2
|
||||
|
||||
Reference in New Issue
Block a user