Preserve type capabilities of captured type

This commit is contained in:
Denis Zharkov
2015-12-22 15:11:06 +03:00
parent e7dbcfe21f
commit 8d0a90a838
@@ -68,10 +68,15 @@ public class CapturedType(
override fun getDelegate(): KotlinType = delegateType
override fun getCapabilities(): TypeCapabilities = object : TypeCapabilities {
override fun <T : TypeCapability> getCapability(capabilityClass: Class<T>) =
this@CapturedType.getCapability(capabilityClass)
}
override fun <T : TypeCapability> getCapability(capabilityClass: Class<T>): T? {
@Suppress("UNCHECKED_CAST")
return if (capabilityClass == javaClass<SubtypingRepresentatives>()) this as T
else super<DelegatingType>.getCapability(capabilityClass)
return if (capabilityClass == SubtypingRepresentatives::class.java) this as T
else super.getCapability(capabilityClass)
}
override val subTypeRepresentative: KotlinType