KT_887 fix. jet.Comparable mapped to j.l.Comparable
This commit is contained in:
@@ -46,6 +46,7 @@ public class JetTypeMapper {
|
|||||||
public static final Type JL_NUMBER_TYPE = Type.getObjectType("java/lang/Number");
|
public static final Type JL_NUMBER_TYPE = Type.getObjectType("java/lang/Number");
|
||||||
public static final Type JL_STRING_BUILDER = Type.getObjectType("java/lang/StringBuilder");
|
public static final Type JL_STRING_BUILDER = Type.getObjectType("java/lang/StringBuilder");
|
||||||
public static final Type JL_STRING_TYPE = Type.getObjectType("java/lang/String");
|
public static final Type JL_STRING_TYPE = Type.getObjectType("java/lang/String");
|
||||||
|
private static final Type JL_COMPARABLE_TYPE = Type.getObjectType("java/lang/Comparable");
|
||||||
|
|
||||||
public static final Type ARRAY_INT_TYPE = Type.getType(int[].class);
|
public static final Type ARRAY_INT_TYPE = Type.getType(int[].class);
|
||||||
public static final Type ARRAY_LONG_TYPE = Type.getType(long[].class);
|
public static final Type ARRAY_LONG_TYPE = Type.getType(long[].class);
|
||||||
@@ -297,6 +298,15 @@ public class JetTypeMapper {
|
|||||||
throw new IllegalStateException("should not compile an error type");
|
throw new IllegalStateException("should not compile an error type");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (standardLibrary.getComparable().equals(descriptor)) {
|
||||||
|
if (jetType.getArguments().size() != 1) {
|
||||||
|
throw new UnsupportedOperationException("Comparable must have one type argument");
|
||||||
|
}
|
||||||
|
|
||||||
|
// todo signature
|
||||||
|
return JL_COMPARABLE_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
if (standardLibrary.getArray().equals(descriptor)) {
|
if (standardLibrary.getArray().equals(descriptor)) {
|
||||||
if (jetType.getArguments().size() != 1) {
|
if (jetType.getArguments().size() != 1) {
|
||||||
throw new UnsupportedOperationException("arrays must have one type argument");
|
throw new UnsupportedOperationException("arrays must have one type argument");
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ public class JetStandardLibrary {
|
|||||||
private ClassDescriptor arrayClass;
|
private ClassDescriptor arrayClass;
|
||||||
private ClassDescriptor iterableClass;
|
private ClassDescriptor iterableClass;
|
||||||
private ClassDescriptor typeInfoClass;
|
private ClassDescriptor typeInfoClass;
|
||||||
|
private ClassDescriptor comparableClass;
|
||||||
|
|
||||||
private JetType byteType;
|
private JetType byteType;
|
||||||
private JetType charType;
|
private JetType charType;
|
||||||
@@ -168,6 +169,7 @@ public class JetStandardLibrary {
|
|||||||
this.arrayClass = (ClassDescriptor) libraryScope.getClassifier("Array");
|
this.arrayClass = (ClassDescriptor) libraryScope.getClassifier("Array");
|
||||||
|
|
||||||
this.iterableClass = (ClassDescriptor) libraryScope.getClassifier("Iterable");
|
this.iterableClass = (ClassDescriptor) libraryScope.getClassifier("Iterable");
|
||||||
|
this.comparableClass = (ClassDescriptor) libraryScope.getClassifier("Comparable");
|
||||||
// typeInfoNamespace = libraryScope.getNamespace("typeinfo");
|
// typeInfoNamespace = libraryScope.getNamespace("typeinfo");
|
||||||
this.typeInfoClass = (ClassDescriptor) libraryScope.getClassifier("TypeInfo");
|
this.typeInfoClass = (ClassDescriptor) libraryScope.getClassifier("TypeInfo");
|
||||||
this.typeInfoFunction = libraryScope.getFunctions("typeinfo");
|
this.typeInfoFunction = libraryScope.getFunctions("typeinfo");
|
||||||
@@ -297,6 +299,12 @@ public class JetStandardLibrary {
|
|||||||
return iterableClass;
|
return iterableClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public ClassDescriptor getComparable() {
|
||||||
|
initStdClasses();
|
||||||
|
return comparableClass;
|
||||||
|
}
|
||||||
|
|
||||||
// public NamespaceDescriptor getTypeInfoNamespace() {
|
// public NamespaceDescriptor getTypeInfoNamespace() {
|
||||||
// initStdClasses();
|
// initStdClasses();
|
||||||
// return typeInfoNamespace;
|
// return typeInfoNamespace;
|
||||||
@@ -392,7 +400,12 @@ public class JetStandardLibrary {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public JetType getIterableType(@NotNull JetType argument) {
|
public JetType getIterableType(@NotNull JetType argument) {
|
||||||
List<TypeProjection> types = Collections.singletonList(new TypeProjection(Variance.INVARIANT, argument));
|
return getIterableType(Variance.INVARIANT, argument);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public JetType getIterableType(@NotNull Variance projectionType, @NotNull JetType argument) {
|
||||||
|
List<TypeProjection> types = Collections.singletonList(new TypeProjection(projectionType, argument));
|
||||||
return new JetTypeImpl(
|
return new JetTypeImpl(
|
||||||
Collections.<AnnotationDescriptor>emptyList(),
|
Collections.<AnnotationDescriptor>emptyList(),
|
||||||
getIterable().getTypeConstructor(),
|
getIterable().getTypeConstructor(),
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
val _0 : Double = 0.0
|
||||||
|
val _0dbl : Double = 0.dbl
|
||||||
|
|
||||||
|
fun box() : String {
|
||||||
|
if(_0 != _0dbl) return "fail"
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
class Book(val name: String) : Comparable<Book> {
|
||||||
|
override fun compareTo(other: Book) = name.compareTo(other.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box() = if(Book("239").compareTo(Book("932")) != 0) "OK" else "fail"
|
||||||
@@ -355,4 +355,12 @@ public class PrimitiveTypesTest extends CodegenTestCase {
|
|||||||
public void testKt877 () {
|
public void testKt877 () {
|
||||||
blackBoxFile("regressions/kt877.jet");
|
blackBoxFile("regressions/kt877.jet");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testKt882 () {
|
||||||
|
// blackBoxFile("regressions/kt882.jet");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testKt887 () {
|
||||||
|
blackBoxFile("regressions/kt887.jet");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user