Introduce ClassDescriptor.declaredTypeParameters

Should be a subset of type constructor's parameters
This commit is contained in:
Denis Zharkov
2015-11-03 13:56:04 +03:00
parent 57094954a3
commit c9aa75259b
26 changed files with 130 additions and 70 deletions
@@ -112,6 +112,16 @@ class LazyJavaClassDescriptor(
}
}
private val declaredParameters = c.storageManager.createLazyValue {
jClass.typeParameters.map {
p ->
c.typeParameterResolver.resolveTypeParameter(p)
?: throw AssertionError("Parameter $p surely belongs to class $jClass, so it must be resolved")
}
}
override fun getDeclaredTypeParameters() = declaredParameters()
override fun getFunctionTypeForSamInterface(): KotlinType? = functionTypeForSamInterface()
override fun isCompanionObject() = false
@@ -121,11 +131,7 @@ class LazyJavaClassDescriptor(
private inner class LazyJavaClassTypeConstructor : AbstractClassTypeConstructor() {
private val parameters = c.storageManager.createLazyValue {
jClass.getTypeParameters().map {
p ->
c.typeParameterResolver.resolveTypeParameter(p)
?: throw AssertionError("Parameter $p surely belongs to class $jClass, so it must be resolved")
}
this@LazyJavaClassDescriptor.declaredTypeParameters
}
override fun getParameters(): List<TypeParameterDescriptor> = parameters()