Disallowed using type parameter as reified type argument.

#KT-3050 fixed
This commit is contained in:
Evgeny Gerashchenko
2013-09-26 03:12:14 +04:00
parent 2c877f080e
commit 48625dd7b6
15 changed files with 147 additions and 10 deletions
@@ -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>) {
}