KT-939 CommonSupertypes erases scopes associated to types

This commit is contained in:
svtk
2012-01-25 13:52:56 +04:00
parent 7a02508bb0
commit c9cba3e1cc
2 changed files with 29 additions and 1 deletions
@@ -1,8 +1,11 @@
package org.jetbrains.jet.lang.types;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
import java.util.*;
@@ -153,7 +156,12 @@ public class CommonSupertypes {
}
// TODO : attributes?
return new JetTypeImpl(Collections.<AnnotationDescriptor>emptyList(), constructor, nullable, newProjections, JetStandardClasses.STUB); // TODO : scope
JetScope newScope = JetStandardClasses.STUB;
DeclarationDescriptor declarationDescriptor = constructor.getDeclarationDescriptor();
if (declarationDescriptor instanceof ClassDescriptor) {
newScope = ((ClassDescriptor) declarationDescriptor).getMemberScope(newProjections);
}
return new JetTypeImpl(Collections.<AnnotationDescriptor>emptyList(), constructor, nullable, newProjections, newScope);
}
@NotNull
@@ -0,0 +1,20 @@
package kt939
//+JDK
//KT-939 CommonSupertypes erases scopes associated to types
fun compare(o1 : String?, o2 : String?) : Int {
val l1 = o1?.length ?: 0
val l2 = o2?.length ?: 0
return l1 - l2 // '-' is unresolved, because the type of l1 is Int with an empty member scope
}
//KT-1117 Unresolved reference to multiply sign
fun test() {
(System.getProperty("path.separator")?.length ?: 4) * 55 + 5
val x = System.getProperty("path.separator")?.length ?: 4
x * 55 + 5
}