diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/CommonSupertypes.java b/core/descriptors/src/org/jetbrains/jet/lang/types/CommonSupertypes.java index eab862db50e..fb1641fc056 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/CommonSupertypes.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/CommonSupertypes.java @@ -96,7 +96,7 @@ public class CommonSupertypes { } if (!hasFlexible) return commonSuperTypeForInflexible(types, recursionDepth, maxDepth); - return DelegatingFlexibleType.OBJECT$.create( + return DelegatingFlexibleType.create( commonSuperTypeForInflexible(lower, recursionDepth, maxDepth), commonSuperTypeForInflexible(upper, recursionDepth, maxDepth), KotlinPackage.single(capabilities) // mixing different capabilities is not supported diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/TypeSubstitutor.java b/core/descriptors/src/org/jetbrains/jet/lang/types/TypeSubstitutor.java index 122b07f33c7..53a0d4d5cbf 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/TypeSubstitutor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/TypeSubstitutor.java @@ -163,7 +163,7 @@ public class TypeSubstitutor { unsafeSubstitute(new TypeProjectionImpl(originalProjectionKind, flexibility.getUpperBound()), recursionDepth + 1); // todo: projection kind is neglected return new TypeProjectionImpl(originalProjectionKind, - DelegatingFlexibleType.OBJECT$.create( + DelegatingFlexibleType.create( substitutedLower.getType(), substitutedUpper.getType(), flexibility.getExtraCapabilities() diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/flexibleTypes.kt b/core/descriptors/src/org/jetbrains/jet/lang/types/flexibleTypes.kt index df59ce58cac..f290f538fee 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/flexibleTypes.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/flexibleTypes.kt @@ -19,6 +19,7 @@ package org.jetbrains.jet.lang.types import org.jetbrains.jet.lang.types.checker.JetTypeChecker import org.jetbrains.jet.lang.types.Approximation.DataFlowExtras import org.jetbrains.jet.lang.resolve.name.FqName +import kotlin.platform.platformStatic public trait FlexibleTypeCapabilities { fun getCapability(capabilityClass: Class, jetType: JetType, flexibility: Flexibility): T? @@ -119,7 +120,7 @@ public open class DelegatingFlexibleType protected ( override val extraCapabilities: FlexibleTypeCapabilities ) : DelegatingType(), NullAwareness, Flexibility, Approximation { class object { - fun create(lowerBound: JetType, upperBound: JetType, extraCapabilities: FlexibleTypeCapabilities): JetType { + platformStatic fun create(lowerBound: JetType, upperBound: JetType, extraCapabilities: FlexibleTypeCapabilities): JetType { if (lowerBound == upperBound) return lowerBound return DelegatingFlexibleType(lowerBound, upperBound, extraCapabilities) } diff --git a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/TypeDeserializer.java b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/TypeDeserializer.java index 61ceb725daf..1c3a57b2aac 100644 --- a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/TypeDeserializer.java +++ b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/TypeDeserializer.java @@ -106,7 +106,7 @@ public class TypeDeserializer { if (capabilities == null) return ErrorUtils.createErrorType(new DeserializedType(proto) + ": Capabilities not found for id " + id); - return DelegatingFlexibleType.OBJECT$.create( + return DelegatingFlexibleType.create( new DeserializedType(proto), new DeserializedType(proto.getFlexibleUpperBound()), capabilities