Support forced resolve for lazy flexible types

This commit is contained in:
Andrey Breslav
2014-07-01 21:13:11 +04:00
parent 549df3c0eb
commit b4f26bde44
@@ -24,6 +24,7 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.descriptors.annotations.Annotations; import org.jetbrains.jet.lang.descriptors.annotations.Annotations;
import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.types.FlexibleType;
import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.TypeConstructor; import org.jetbrains.jet.lang.types.TypeConstructor;
import org.jetbrains.jet.lang.types.TypeProjection; import org.jetbrains.jet.lang.types.TypeProjection;
@@ -85,6 +86,13 @@ public class ForceResolveUtil {
public static void forceResolveAllContents(@Nullable JetType type) { public static void forceResolveAllContents(@Nullable JetType type) {
if (type == null) return; if (type == null) return;
if (type instanceof FlexibleType) {
FlexibleType flexibleType = (FlexibleType) type;
forceResolveAllContents(flexibleType.getLowerBound());
forceResolveAllContents(flexibleType.getUpperBound());
return;
}
forceResolveAllContents(type.getConstructor()); forceResolveAllContents(type.getConstructor());
for (TypeProjection projection : type.getArguments()) { for (TypeProjection projection : type.getArguments()) {
forceResolveAllContents(projection.getType()); forceResolveAllContents(projection.getType());