Disallowed using type parameter as reified type argument.
#KT-3050 fixed
This commit is contained in:
@@ -33,9 +33,9 @@ trait WriteOnlyArray<in T> : ISized {
|
||||
}
|
||||
|
||||
class MutableArray<T>(length: Int, init : (Int) -> T) : ReadOnlyArray<T>, WriteOnlyArray<T> {
|
||||
private val array = Array<T>(length, init)
|
||||
private val array = Array<Any?>(length, init)
|
||||
|
||||
override fun get(index : Int) : T = array[index]
|
||||
override fun get(index : Int) : T = array[index] as T
|
||||
override fun set(index : Int, value : T) : Unit { array[index] = value }
|
||||
|
||||
override val size : Int
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
fun <reified T> T.plus(<!UNUSED_PARAMETER!>p<!>: T): T = this
|
||||
|
||||
fun <reified T> T.invoke(): T = this
|
||||
|
||||
fun <A> main(tp: A, any: Any) {
|
||||
tp <!TYPE_PARAMETER_AS_REIFIED!>+<!> tp
|
||||
any + any
|
||||
|
||||
<!TYPE_PARAMETER_AS_REIFIED!>tp<!>()
|
||||
any()
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
class C<reified T>
|
||||
|
||||
fun <T> id(p: T): T = p
|
||||
|
||||
fun <A> main() {
|
||||
<!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>C<!>()
|
||||
|
||||
val <!UNUSED_VARIABLE!>a<!>: C<A> = <!TYPE_PARAMETER_AS_REIFIED!>C<!>()
|
||||
<!TYPE_PARAMETER_AS_REIFIED!>C<!><A>()
|
||||
|
||||
val <!UNUSED_VARIABLE!>b<!>: C<Int> = C()
|
||||
C<Int>()
|
||||
|
||||
// TODO svtk, uncomment when extensions are called for nested calls!
|
||||
//val < !UNUSED_VARIABLE!>с< !>: C<A> = id(< !TYPE_PARAMETER_AS_REIFIED!>C< !>())
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
fun <reified T> f(): T = throw UnsupportedOperationException()
|
||||
|
||||
fun <T> id(p: T): T = p
|
||||
|
||||
fun <A> main() {
|
||||
<!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>f<!>()
|
||||
|
||||
val <!UNUSED_VARIABLE!>a<!>: A = <!TYPE_PARAMETER_AS_REIFIED!>f<!>()
|
||||
<!TYPE_PARAMETER_AS_REIFIED!>f<!><A>()
|
||||
|
||||
val <!UNUSED_VARIABLE!>b<!>: Int = f()
|
||||
f<Int>()
|
||||
|
||||
// TODO svtk, uncomment when extensions are called for nested calls!
|
||||
//val < !UNUSED_VARIABLE!>с< !>: A = id(< !TYPE_PARAMETER_AS_REIFIED!>f< !>())
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
val <reified T> v: T
|
||||
get() = throw UnsupportedOperationException()
|
||||
|
||||
fun <T> id(p: T): T = p
|
||||
|
||||
fun <A> main() {
|
||||
val <!UNUSED_VARIABLE!>a<!> = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER, DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>v<!>
|
||||
|
||||
val <!UNUSED_VARIABLE!>b<!>: A = <!TYPE_PARAMETER_AS_REIFIED!>v<!>
|
||||
|
||||
val <!UNUSED_VARIABLE!>c<!>: Int = v
|
||||
|
||||
// TODO svtk, uncomment when extensions are called for nested calls!
|
||||
//val < !UNUSED_VARIABLE!>d< !>: A = id(< !TYPE_PARAMETER_AS_REIFIED!>v< !>)
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
class C<reified T>
|
||||
|
||||
fun <A> main(<!UNUSED_PARAMETER!>p1<!>: C<A>, <!UNUSED_PARAMETER!>p2<!>: C<Int>) {
|
||||
}
|
||||
Reference in New Issue
Block a user