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;
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -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?
|
||||||
|
|||||||
Reference in New Issue
Block a user