Forced resolution improved to handle type parameter bounds

This commit is contained in:
Andrey Breslav
2014-02-20 14:52:03 +04:00
parent 5ea5d8a9c3
commit a3075f90db
3 changed files with 14 additions and 6 deletions
@@ -31,6 +31,7 @@ import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.impl.*;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.lazy.ForceResolveUtil;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory;
import org.jetbrains.jet.lang.resolve.name.FqName;
@@ -178,7 +179,9 @@ public class TopDownAnalyzer {
private void visitClassOrObject(@NotNull JetClassOrObject classOrObject) {
c.getClasses().put(
classOrObject,
(ClassDescriptorWithResolutionScopes) resolveSession.getClassDescriptor(classOrObject)
ForceResolveUtil.forceResolveAllContents(
(ClassDescriptorWithResolutionScopes) resolveSession.getClassDescriptor(classOrObject)
)
);
registerDeclarations(classOrObject.getDeclarations());
}
@@ -212,7 +215,9 @@ public class TopDownAnalyzer {
public void visitNamedFunction(@NotNull JetNamedFunction function) {
c.getFunctions().put(
function,
(SimpleFunctionDescriptor) resolveSession.resolveToDescriptor(function)
ForceResolveUtil.forceResolveAllContents(
(SimpleFunctionDescriptor) resolveSession.resolveToDescriptor(function)
)
);
registerScope(function, function);
}
@@ -221,7 +226,9 @@ public class TopDownAnalyzer {
public void visitProperty(@NotNull JetProperty property) {
c.getProperties().put(
property,
(PropertyDescriptor) resolveSession.resolveToDescriptor(property)
ForceResolveUtil.forceResolveAllContents(
(PropertyDescriptor) resolveSession.resolveToDescriptor(property)
)
);
registerScope(property, property);
registerScope(property.getGetter(), property);
@@ -34,10 +34,11 @@ public class ForceResolveUtil {
private ForceResolveUtil() {}
public static void forceResolveAllContents(@NotNull DeclarationDescriptor descriptor) {
public static <T extends DeclarationDescriptor> T forceResolveAllContents(@NotNull T descriptor) {
LOG.debug("descriptor: " + descriptor);
doForceResolveAllContents(descriptor);
LOG.debug("<<< " + descriptor);
return descriptor;
}
public static void forceResolveAllContents(@NotNull JetScope scope) {
@@ -119,11 +119,11 @@ public class LazyTypeParameterDescriptor extends AbstractLazyTypeParameterDescri
getContainingDeclaration();
getDefaultType();
getIndex();
getLowerBounds();
ForceResolveUtil.forceResolveAllContents(getLowerBounds());
getLowerBoundsAsType();
getOriginal();
ForceResolveUtil.forceResolveAllContents(getTypeConstructor());
getUpperBounds();
ForceResolveUtil.forceResolveAllContents(getUpperBounds());
getUpperBoundsAsType();
getVariance();
}