From f710ba88f88b81691a5927fb58bcfa1bb553bfa4 Mon Sep 17 00:00:00 2001 From: Stanislav Erokhin Date: Fri, 22 Jan 2016 16:07:29 +0300 Subject: [PATCH] Minor. Removed TypeParameterDescriptor#getLowerBounds --- .../src/org/jetbrains/kotlin/resolve/TypeResolver.kt | 2 +- .../lazy/descriptors/LazyClassDescriptor.java | 1 - .../descriptors/LazyTypeParameterDescriptor.java | 1 - .../jetbrains/kotlin/load/java/lazy/types/RawType.kt | 3 ++- .../kotlin/descriptors/TypeParameterDescriptor.java | 3 --- .../impl/AbstractTypeParameterDescriptor.java | 6 ------ .../src/org/jetbrains/kotlin/types/TypeUtils.java | 12 +----------- .../src/org/jetbrains/kotlin/idea/util/FuzzyType.kt | 1 - .../util/psi/patternMatching/KotlinPsiUnifier.kt | 1 - 9 files changed, 4 insertions(+), 26 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt index 7e23b57f7cc..7fe216ea22e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt @@ -321,7 +321,7 @@ class TypeResolver( KotlinTypeImpl.create( annotations, typeParameter.typeConstructor, - TypeUtils.hasNullableLowerBound(typeParameter), + false, listOf(), scopeForTypeParameter) } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java index 926a211cda0..bd82c6d547a 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java @@ -562,7 +562,6 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes getTypeConstructor().getSupertypes(); for (TypeParameterDescriptor typeParameterDescriptor : getTypeConstructor().getParameters()) { typeParameterDescriptor.getUpperBounds(); - typeParameterDescriptor.getLowerBounds(); } getUnsubstitutedPrimaryConstructor(); getVisibility(); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java index 6eef5c62679..337514e7434 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java @@ -143,7 +143,6 @@ public class LazyTypeParameterDescriptor extends AbstractLazyTypeParameterDescri getContainingDeclaration(); getDefaultType(); getIndex(); - ForceResolveUtil.forceResolveAllContents(getLowerBounds()); getOriginal(); ForceResolveUtil.forceResolveAllContents(getTypeConstructor()); ForceResolveUtil.forceResolveAllContents(getUpperBounds()); diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/RawType.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/RawType.kt index 0abbe261199..508e085ecc2 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/RawType.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/RawType.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.load.java.components.TypeUsage import org.jetbrains.kotlin.renderer.CustomFlexibleRendering import org.jetbrains.kotlin.renderer.DescriptorRenderer +import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.types.* object RawTypeTag : TypeCapability @@ -150,7 +151,7 @@ internal object RawSubstitution : TypeSubstitution() { JavaTypeFlexibility.FLEXIBLE_UPPER_BOUND, JavaTypeFlexibility.INFLEXIBLE -> { if (!parameter.variance.allowsOutPosition) // in T -> Comparable - TypeProjectionImpl(Variance.INVARIANT, parameter.lowerBounds.first()) + TypeProjectionImpl(Variance.INVARIANT, parameter.builtIns.nothingType) else if (erasedUpperBound.constructor.parameters.isNotEmpty()) // T : Enum -> out Enum<*> TypeProjectionImpl(Variance.OUT_VARIANCE, erasedUpperBound) diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/TypeParameterDescriptor.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/TypeParameterDescriptor.java index 03f1375dd7b..e8b93d45684 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/TypeParameterDescriptor.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/TypeParameterDescriptor.java @@ -33,9 +33,6 @@ public interface TypeParameterDescriptor extends ClassifierDescriptor { @NotNull List getUpperBounds(); - @NotNull - List getLowerBounds(); - @NotNull @Override TypeConstructor getTypeConstructor(); diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractTypeParameterDescriptor.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractTypeParameterDescriptor.java index 7428ec8bba6..c9f356c581a 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractTypeParameterDescriptor.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractTypeParameterDescriptor.java @@ -181,12 +181,6 @@ public abstract class AbstractTypeParameterDescriptor extends DeclarationDescrip return defaultType.invoke(); } - @NotNull - @Override - public List getLowerBounds() { - return Collections.singletonList(getBuiltIns(this).getNothingType()); - } - @NotNull @Override @Deprecated diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java b/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java index 998433a62f8..9615814a189 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java @@ -304,15 +304,6 @@ public class TypeUtils { return result; } - public static boolean hasNullableLowerBound(@NotNull TypeParameterDescriptor typeParameterDescriptor) { - for (KotlinType bound : typeParameterDescriptor.getLowerBounds()) { - if (bound.isMarkedNullable()) { - return true; - } - } - return false; - } - /** * A work-around of the generic nullability problem in the type checker * Semantics should be the same as `!isSubtype(T, Any)` @@ -343,8 +334,7 @@ public class TypeUtils { if (FlexibleTypesKt.isFlexible(type) && acceptsNullable(FlexibleTypesKt.flexibility(type).getUpperBound())) { return true; } - TypeParameterDescriptor typeParameterDescriptor = getTypeParameterDescriptorOrNull(type); - return typeParameterDescriptor != null && hasNullableLowerBound(typeParameterDescriptor); + return false; } public static boolean hasNullableSuperType(@NotNull KotlinType type) { diff --git a/idea/ide-common/src/org/jetbrains/kotlin/idea/util/FuzzyType.kt b/idea/ide-common/src/org/jetbrains/kotlin/idea/util/FuzzyType.kt index 23ae065e74f..77e0244636d 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/idea/util/FuzzyType.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/idea/util/FuzzyType.kt @@ -72,7 +72,6 @@ class FuzzyType( private fun MutableSet.addUsedTypeParameters(type: KotlinType) { val typeParameter = type.constructor.declarationDescriptor as? TypeParameterDescriptor if (typeParameter != null && add(typeParameter)) { - typeParameter.lowerBounds.forEach { addUsedTypeParameters(it) } typeParameter.upperBounds.forEach { addUsedTypeParameters(it) } } diff --git a/idea/ide-common/src/org/jetbrains/kotlin/idea/util/psi/patternMatching/KotlinPsiUnifier.kt b/idea/ide-common/src/org/jetbrains/kotlin/idea/util/psi/patternMatching/KotlinPsiUnifier.kt index 6db945e1189..093d3fe4a75 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/idea/util/psi/patternMatching/KotlinPsiUnifier.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/idea/util/psi/patternMatching/KotlinPsiUnifier.kt @@ -621,7 +621,6 @@ class KotlinPsiUnifier( desc2: TypeParameterDescriptor ): Status { if (desc1.variance != desc2.variance) return UNMATCHED - if (!matchTypes(desc1.lowerBounds, desc2.lowerBounds)) return UNMATCHED if (!matchTypes(desc1.upperBounds, desc2.upperBounds)) return UNMATCHED return MATCHED }