Forced resolution improved to handle type parameter bounds
This commit is contained in:
@@ -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) {
|
||||
|
||||
+2
-2
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user