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
@@ -134,7 +134,7 @@ private fun getClassInnerScope(outerScope: LexicalScope, descriptor: ClassDescri
val headerScope = LexicalScopeImpl(outerScope, descriptor, false, descriptor.thisAsReceiverParameter,
"Class ${descriptor.getName()} header scope") {
for (typeParameter in descriptor.getTypeConstructor().getParameters()) {
for (typeParameter in descriptor.declaredTypeParameters) {
addClassifierDescriptor(typeParameter)
}
for (constructor in descriptor.getConstructors()) {
@@ -327,7 +327,7 @@ public class ResolveElementCache(
val declaration = jetTypeConstraint.getParentOfType<KtDeclaration>(true)!!
val descriptor = analyzer.resolveToDescriptor(declaration) as ClassDescriptor
for (parameterDescriptor in descriptor.getTypeConstructor().getParameters()) {
for (parameterDescriptor in descriptor.declaredTypeParameters) {
ForceResolveUtil.forceResolveAllContents<TypeParameterDescriptor>(parameterDescriptor)
}
@@ -166,7 +166,7 @@ class BasicLookupElementFactory(
}
is ClassDescriptor -> {
val typeParams = descriptor.getTypeConstructor().getParameters()
val typeParams = descriptor.declaredTypeParameters
if (includeClassTypeArguments && typeParams.isNotEmpty()) {
element = element.appendTailText(typeParams.map { it.getName().asString() }.joinToString(", ", "<", ">"), true)
}
@@ -295,7 +295,7 @@ class TypeInstantiationItems(
private val freeParameters: Collection<TypeParameterDescriptor>,
private val tail: Tail?) : InheritanceItemsSearcher {
private val baseHasTypeArgs = classDescriptor.typeConstructor.parameters.isNotEmpty()
private val baseHasTypeArgs = classDescriptor.declaredTypeParameters.isNotEmpty()
private val expectedType = KotlinTypeImpl.create(Annotations.EMPTY, classDescriptor, false, typeArgs)
private val expectedFuzzyType = FuzzyType(expectedType, freeParameters)
@@ -309,7 +309,7 @@ class TypeInstantiationItems(
if (!visibilityFilter(descriptor)) continue
var inheritorFuzzyType = FuzzyType(descriptor.defaultType, descriptor.typeConstructor.parameters)
val hasTypeArgs = descriptor.getTypeConstructor().getParameters().isNotEmpty()
val hasTypeArgs = descriptor.declaredTypeParameters.isNotEmpty()
if (hasTypeArgs || baseHasTypeArgs) {
val substitutor = inheritorFuzzyType.checkIsSubtypeOf(expectedFuzzyType) ?: continue
if (!substitutor.isEmpty) {
@@ -184,7 +184,7 @@ class KotlinGenerateEqualsAndHashcodeAction : KotlinGenerateMemberActionBase<Kot
val paramName = equalsFun.valueParameters.first().name!!.quoteIfNeeded()
var typeForCast = IdeDescriptorRenderers.SOURCE_CODE.renderClassifierName(classDescriptor)
val typeParams = classDescriptor.defaultType.constructor.parameters
val typeParams = classDescriptor.declaredTypeParameters
if (typeParams.isNotEmpty()) {
typeForCast += typeParams.map { "*" }.joinToString(prefix = "<", postfix = ">")
}
@@ -349,7 +349,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) {
assert (receiverClassDescriptor is JavaClassDescriptor) { "Unexpected receiver class: $receiverClassDescriptor" }
val projections = receiverClassDescriptor.getTypeConstructor().getParameters()
val projections = receiverClassDescriptor.declaredTypeParameters
.map { TypeProjectionImpl(it.getDefaultType()) }
val memberScope = receiverClassDescriptor.getMemberScope(projections)
@@ -47,7 +47,7 @@ class KotlinPullUpData(val sourceClass: KtClassOrObject,
val targetClassDescriptor = targetClass.getClassDescriptorIfAny(resolutionFacade)!!
val typeParametersInSourceClassContext by lazy {
sourceClassDescriptor.typeConstructor.parameters +
sourceClassDescriptor.declaredTypeParameters +
sourceClass.getResolutionScope(sourceClassContext, resolutionFacade)
.collectDescriptorsFiltered(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS)
.filterIsInstance<TypeParameterDescriptor>()