Minor. Methods renamed to reflect tha fact that they handle more types than just collections
This commit is contained in:
committed by
Denis Zharkov
parent
579ca9c1f2
commit
d140e83386
+11
-10
@@ -158,12 +158,13 @@ public class SignaturesPropagationData {
|
||||
if (JvmPackage.getPLATFORM_TYPES()) return autoType;
|
||||
|
||||
List<TypeAndVariance> typesFromSuperMethods = ContainerUtil.map(superFunctions,
|
||||
new Function<FunctionDescriptor, TypeAndVariance>() {
|
||||
@Override
|
||||
public TypeAndVariance fun(FunctionDescriptor superFunction) {
|
||||
return new TypeAndVariance(superFunction.getReturnType(), Variance.OUT_VARIANCE);
|
||||
}
|
||||
});
|
||||
new Function<FunctionDescriptor, TypeAndVariance>() {
|
||||
@Override
|
||||
public TypeAndVariance fun(FunctionDescriptor superFunction) {
|
||||
return new TypeAndVariance(superFunction.getReturnType(),
|
||||
Variance.OUT_VARIANCE);
|
||||
}
|
||||
});
|
||||
|
||||
return modifyTypeAccordingToSuperMethods(autoType, typesFromSuperMethods, MEMBER_SIGNATURE_COVARIANT);
|
||||
}
|
||||
@@ -629,10 +630,10 @@ public class SignaturesPropagationData {
|
||||
if (classifierFromSuper instanceof ClassDescriptor) {
|
||||
ClassDescriptor classFromSuper = (ClassDescriptor) classifierFromSuper;
|
||||
|
||||
if (JavaToKotlinClassMap.INSTANCE.isMutableCollection(classFromSuper)) {
|
||||
if (JavaToKotlinClassMap.INSTANCE.isMutable(classFromSuper)) {
|
||||
someSupersMutable = true;
|
||||
}
|
||||
else if (JavaToKotlinClassMap.INSTANCE.isReadOnlyCollection(classFromSuper)) {
|
||||
else if (JavaToKotlinClassMap.INSTANCE.isReadOnly(classFromSuper)) {
|
||||
if (typeFromSuper.varianceOfPosition == Variance.OUT_VARIANCE) {
|
||||
someSupersCovariantReadOnly = true;
|
||||
}
|
||||
@@ -648,12 +649,12 @@ public class SignaturesPropagationData {
|
||||
return classifier;
|
||||
}
|
||||
else if (someSupersMutable) {
|
||||
if (JavaToKotlinClassMap.INSTANCE.isReadOnlyCollection(klass)) {
|
||||
if (JavaToKotlinClassMap.INSTANCE.isReadOnly(klass)) {
|
||||
return JavaToKotlinClassMap.INSTANCE.convertReadOnlyToMutable(klass);
|
||||
}
|
||||
}
|
||||
else if (someSupersNotCovariantReadOnly || someSupersCovariantReadOnly) {
|
||||
if (JavaToKotlinClassMap.INSTANCE.isMutableCollection(klass)) {
|
||||
if (JavaToKotlinClassMap.INSTANCE.isMutable(klass)) {
|
||||
return JavaToKotlinClassMap.INSTANCE.convertMutableToReadOnly(klass);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -162,7 +162,7 @@ class LazyJavaTypeResolver(
|
||||
val kotlinDescriptor = javaToKotlin.mapJavaToKotlin(fqName) ?: return null
|
||||
|
||||
if (howThisTypeIsUsedEffectively == MEMBER_SIGNATURE_COVARIANT || howThisTypeIsUsedEffectively == SUPERTYPE) {
|
||||
if (javaToKotlin.isReadOnlyCollection(kotlinDescriptor)) {
|
||||
if (javaToKotlin.isReadOnly(kotlinDescriptor)) {
|
||||
return javaToKotlin.convertReadOnlyToMutable(kotlinDescriptor)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -182,11 +182,11 @@ public class JavaToKotlinClassMap implements PlatformToKotlinClassMap {
|
||||
return className.isSafe() ? mapPlatformClass(className.toSafe()) : Collections.<ClassDescriptor>emptySet();
|
||||
}
|
||||
|
||||
public boolean isMutableCollection(@NotNull ClassDescriptor mutable) {
|
||||
public boolean isMutable(@NotNull ClassDescriptor mutable) {
|
||||
return mutableToReadOnly.containsKey(mutable);
|
||||
}
|
||||
|
||||
public boolean isReadOnlyCollection(@NotNull ClassDescriptor readOnly) {
|
||||
public boolean isReadOnly(@NotNull ClassDescriptor readOnly) {
|
||||
return readOnlyToMutable.containsKey(readOnly);
|
||||
}
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ public fun approximateFlexibleTypes(jetType: JetType, outermost: Boolean = true)
|
||||
if (jetType.isFlexible()) {
|
||||
val flexible = jetType.flexibility()
|
||||
val lowerClass = flexible.lowerBound.getConstructor().getDeclarationDescriptor() as? ClassDescriptor?
|
||||
val isCollection = lowerClass != null && JavaToKotlinClassMap.INSTANCE.isMutableCollection(lowerClass)
|
||||
val isCollection = lowerClass != null && JavaToKotlinClassMap.INSTANCE.isMutable(lowerClass)
|
||||
// (Mutable)Collection<T>! -> MutableCollection<T>?
|
||||
// Foo<(Mutable)Collection<T>!>! -> Foo<Collection<T>>?
|
||||
// Foo! -> Foo?
|
||||
|
||||
Reference in New Issue
Block a user