deprecating types after colon
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
trait Tr<T>
|
||||
trait G<T> : Tr<T>
|
||||
|
||||
fun test(tr: Tr<String>) {
|
||||
val v = tr as G?
|
||||
// If v is not nullable, there will be a warning on this line:
|
||||
v!!: G<String>
|
||||
checkSubtype<G<String>>(v!!)
|
||||
}
|
||||
@@ -1,8 +1,10 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
trait Tr
|
||||
trait G<T>
|
||||
|
||||
fun test(tr: Tr) {
|
||||
val v = tr as <!NO_TYPE_ARGUMENTS_ON_RHS!>G?<!>
|
||||
// If v is not nullable, there will be a warning on this line:
|
||||
v!!: G<*>
|
||||
checkSubtype<G<*>>(v!!)
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
trait Either<out A, out B>
|
||||
trait Left<out A>: Either<A, Nothing>
|
||||
trait Right<out B>: Either<Nothing, B>
|
||||
@@ -7,10 +9,10 @@ class C2(val v2: Int)
|
||||
|
||||
fun _as_left(e: Either<C1, C2>): Any {
|
||||
val v = e as Left
|
||||
return v: Left<C1>
|
||||
return checkSubtype<Left<C1>>(v)
|
||||
}
|
||||
|
||||
fun _as_right(e: Either<C1, C2>): Any {
|
||||
val v = e as Right
|
||||
return v: Right<C2>
|
||||
return checkSubtype<Right<C2>>(v)
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
trait Either<out A, out B>
|
||||
trait Left<out A>: Either<A, Nothing>
|
||||
trait Right<out B>: Either<Nothing, B>
|
||||
@@ -7,10 +9,10 @@ class C2(val v2: Int)
|
||||
|
||||
fun _as_left(e: Either<C1, C2>): Any? {
|
||||
val v = e as? Left
|
||||
return v: Left<C1>?
|
||||
return checkSubtype<Left<C1>?>(v)
|
||||
}
|
||||
|
||||
fun _as_right(e: Either<C1, C2>): Any? {
|
||||
val v = e as? Right
|
||||
return v: Right<C2>?
|
||||
return checkSubtype<Right<C2>?>(v)
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
trait B<T>
|
||||
trait G<T>: B<T>
|
||||
|
||||
fun f(p: B<<!UNRESOLVED_REFERENCE!>Foo<!>>): Any {
|
||||
val v = <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>p<!> as G
|
||||
return <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>v<!>: G<*>
|
||||
return checkSubtype<G<*>>(<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>v<!>)
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
class G<T>
|
||||
|
||||
fun foo(p: <!UNRESOLVED_REFERENCE!>P<!>) {
|
||||
val v = <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>p<!> <!USELESS_CAST_STATIC_ASSERT_IS_FINE!>as <!NO_TYPE_ARGUMENTS_ON_RHS!>G?<!><!>
|
||||
v!!: G<*>
|
||||
val v = <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>p<!> <!USELESS_CAST!>as <!NO_TYPE_ARGUMENTS_ON_RHS!>G?<!><!>
|
||||
checkSubtype<G<*>>(v!!)
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
trait Tr<T>
|
||||
trait G<T> : Tr<T>
|
||||
|
||||
fun test(tr: Tr<String>?) {
|
||||
val v = tr as G
|
||||
v: G<String>
|
||||
checkSubtype<G<String>>(v)
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
trait Tr
|
||||
trait G<T>
|
||||
|
||||
fun test(tr: Tr?) {
|
||||
val v = tr as <!NO_TYPE_ARGUMENTS_ON_RHS!>G<!>
|
||||
v: G<*>
|
||||
checkSubtype<G<*>>(v)
|
||||
}
|
||||
@@ -1,8 +1,10 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
trait Tr<T>
|
||||
trait G<T> : Tr<T>
|
||||
|
||||
fun test(tr: Tr<String>?) {
|
||||
val v = tr as G?
|
||||
// If v is not nullable, there will be a warning on this line:
|
||||
v!!: G<String>
|
||||
checkSubtype<G<String>>(v!!)
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
trait Tr
|
||||
trait G<T>
|
||||
|
||||
fun test(tr: Tr?) {
|
||||
val v = tr as <!NO_TYPE_ARGUMENTS_ON_RHS!>G?<!>
|
||||
v!!: G<*>
|
||||
checkSubtype<G<*>>(v!!)
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
trait Tr
|
||||
trait G<T>
|
||||
|
||||
fun test(tr: Tr) {
|
||||
val v = tr as <!NO_TYPE_ARGUMENTS_ON_RHS!>G<!>
|
||||
v: G<*>
|
||||
checkSubtype<G<*>>(v)
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
trait Tr
|
||||
trait G<T>
|
||||
|
||||
fun test(tr: Tr) = tr: <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>G<!>
|
||||
fun test(tr: Tr) = checkSubtype<<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>G<!>>(tr)
|
||||
Reference in New Issue
Block a user