Minor. Methods renamed to reflect tha fact that they handle more types than just collections

This commit is contained in:
Andrey Breslav
2015-04-15 14:11:50 +03:00
committed by Denis Zharkov
parent 579ca9c1f2
commit d140e83386
4 changed files with 15 additions and 14 deletions
@@ -158,12 +158,13 @@ public class SignaturesPropagationData {
if (JvmPackage.getPLATFORM_TYPES()) return autoType; if (JvmPackage.getPLATFORM_TYPES()) return autoType;
List<TypeAndVariance> typesFromSuperMethods = ContainerUtil.map(superFunctions, List<TypeAndVariance> typesFromSuperMethods = ContainerUtil.map(superFunctions,
new Function<FunctionDescriptor, TypeAndVariance>() { new Function<FunctionDescriptor, TypeAndVariance>() {
@Override @Override
public TypeAndVariance fun(FunctionDescriptor superFunction) { public TypeAndVariance fun(FunctionDescriptor superFunction) {
return new TypeAndVariance(superFunction.getReturnType(), Variance.OUT_VARIANCE); return new TypeAndVariance(superFunction.getReturnType(),
} Variance.OUT_VARIANCE);
}); }
});
return modifyTypeAccordingToSuperMethods(autoType, typesFromSuperMethods, MEMBER_SIGNATURE_COVARIANT); return modifyTypeAccordingToSuperMethods(autoType, typesFromSuperMethods, MEMBER_SIGNATURE_COVARIANT);
} }
@@ -629,10 +630,10 @@ public class SignaturesPropagationData {
if (classifierFromSuper instanceof ClassDescriptor) { if (classifierFromSuper instanceof ClassDescriptor) {
ClassDescriptor classFromSuper = (ClassDescriptor) classifierFromSuper; ClassDescriptor classFromSuper = (ClassDescriptor) classifierFromSuper;
if (JavaToKotlinClassMap.INSTANCE.isMutableCollection(classFromSuper)) { if (JavaToKotlinClassMap.INSTANCE.isMutable(classFromSuper)) {
someSupersMutable = true; someSupersMutable = true;
} }
else if (JavaToKotlinClassMap.INSTANCE.isReadOnlyCollection(classFromSuper)) { else if (JavaToKotlinClassMap.INSTANCE.isReadOnly(classFromSuper)) {
if (typeFromSuper.varianceOfPosition == Variance.OUT_VARIANCE) { if (typeFromSuper.varianceOfPosition == Variance.OUT_VARIANCE) {
someSupersCovariantReadOnly = true; someSupersCovariantReadOnly = true;
} }
@@ -648,12 +649,12 @@ public class SignaturesPropagationData {
return classifier; return classifier;
} }
else if (someSupersMutable) { else if (someSupersMutable) {
if (JavaToKotlinClassMap.INSTANCE.isReadOnlyCollection(klass)) { if (JavaToKotlinClassMap.INSTANCE.isReadOnly(klass)) {
return JavaToKotlinClassMap.INSTANCE.convertReadOnlyToMutable(klass); return JavaToKotlinClassMap.INSTANCE.convertReadOnlyToMutable(klass);
} }
} }
else if (someSupersNotCovariantReadOnly || someSupersCovariantReadOnly) { else if (someSupersNotCovariantReadOnly || someSupersCovariantReadOnly) {
if (JavaToKotlinClassMap.INSTANCE.isMutableCollection(klass)) { if (JavaToKotlinClassMap.INSTANCE.isMutable(klass)) {
return JavaToKotlinClassMap.INSTANCE.convertMutableToReadOnly(klass); return JavaToKotlinClassMap.INSTANCE.convertMutableToReadOnly(klass);
} }
} }
@@ -162,7 +162,7 @@ class LazyJavaTypeResolver(
val kotlinDescriptor = javaToKotlin.mapJavaToKotlin(fqName) ?: return null val kotlinDescriptor = javaToKotlin.mapJavaToKotlin(fqName) ?: return null
if (howThisTypeIsUsedEffectively == MEMBER_SIGNATURE_COVARIANT || howThisTypeIsUsedEffectively == SUPERTYPE) { if (howThisTypeIsUsedEffectively == MEMBER_SIGNATURE_COVARIANT || howThisTypeIsUsedEffectively == SUPERTYPE) {
if (javaToKotlin.isReadOnlyCollection(kotlinDescriptor)) { if (javaToKotlin.isReadOnly(kotlinDescriptor)) {
return javaToKotlin.convertReadOnlyToMutable(kotlinDescriptor) return javaToKotlin.convertReadOnlyToMutable(kotlinDescriptor)
} }
} }
@@ -182,11 +182,11 @@ public class JavaToKotlinClassMap implements PlatformToKotlinClassMap {
return className.isSafe() ? mapPlatformClass(className.toSafe()) : Collections.<ClassDescriptor>emptySet(); 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); return mutableToReadOnly.containsKey(mutable);
} }
public boolean isReadOnlyCollection(@NotNull ClassDescriptor readOnly) { public boolean isReadOnly(@NotNull ClassDescriptor readOnly) {
return readOnlyToMutable.containsKey(readOnly); return readOnlyToMutable.containsKey(readOnly);
} }
@@ -43,7 +43,7 @@ public fun approximateFlexibleTypes(jetType: JetType, outermost: Boolean = true)
if (jetType.isFlexible()) { if (jetType.isFlexible()) {
val flexible = jetType.flexibility() val flexible = jetType.flexibility()
val lowerClass = flexible.lowerBound.getConstructor().getDeclarationDescriptor() as? ClassDescriptor? 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>? // (Mutable)Collection<T>! -> MutableCollection<T>?
// Foo<(Mutable)Collection<T>!>! -> Foo<Collection<T>>? // Foo<(Mutable)Collection<T>!>! -> Foo<Collection<T>>?
// Foo! -> Foo? // Foo! -> Foo?