Update typing rules for class literal expressions.

C::class : KClass<C>
expr: T => expr::class : KClass<out T>

NB: this means Obj::class : KClass<out Obj> for object Obj.
This commit is contained in:
Dmitry Petrov
2016-12-15 18:25:14 +03:00
parent 9fc3d0838e
commit 33ed98a0d3
16 changed files with 110 additions and 26 deletions
+3 -3
View File
@@ -9,12 +9,12 @@ FILE /classReference.kt
TYPE_OP origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
CLASS_REFERENCE 'A' type=kotlin.reflect.KClass<A>
TYPE_OP origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
GET_CLASS type=kotlin.reflect.KClass<A>
GET_CLASS type=kotlin.reflect.KClass<out A>
CALL 'constructor A()' type=A origin=null
TYPE_OP origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
CALL '<get-java>() on KClass<A>: Class<A>' type=java.lang.Class<A> origin=GET_PROPERTY
$receiver: CLASS_REFERENCE 'A' type=kotlin.reflect.KClass<A>
TYPE_OP origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
CALL '<get-java>() on KClass<A>: Class<A>' type=java.lang.Class<A> origin=GET_PROPERTY
$receiver: GET_CLASS type=kotlin.reflect.KClass<A>
CALL '<get-java>() on KClass<out A>: Class<out A>' type=java.lang.Class<out A> origin=GET_PROPERTY
$receiver: GET_CLASS type=kotlin.reflect.KClass<out A>
CALL 'constructor A()' type=A origin=null