Introduce ClassDescriptor.declaredTypeParameters
Should be a subset of type constructor's parameters
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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)
|
||||
}
|
||||
|
||||
+2
-2
@@ -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) {
|
||||
|
||||
+1
-1
@@ -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 = ">")
|
||||
}
|
||||
|
||||
+1
-1
@@ -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>()
|
||||
|
||||
Reference in New Issue
Block a user