From 2d6b8abbe18afde6b61c65a06bf95484e6de6945 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 11 Jul 2012 16:32:32 +0400 Subject: [PATCH] fix java.lang.Number type mapping to jet.Number (KT-2376) --- .../backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java | 3 ++- .../kotlinSignature/error/WrongTypeVariance.kt | 2 +- .../kotlinSignature/error/WrongTypeVariance.txt | 2 +- compiler/testData/readKotlinBinaryClass/type/jlNumber.kt | 3 +++ compiler/testData/readKotlinBinaryClass/type/jlNumber.txt | 3 +++ .../lazy/LazyResolveNamespaceComparingTestGenerated.java | 5 +++++ .../org/jetbrains/jet/rt/signature/JetSignatureReader.java | 2 +- 7 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 compiler/testData/readKotlinBinaryClass/type/jlNumber.kt create mode 100644 compiler/testData/readKotlinBinaryClass/type/jlNumber.txt diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java index bd151bfb576..dfba49abfec 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java @@ -1051,7 +1051,8 @@ public class JetTypeMapper { return JvmPrimitiveType.getByWrapperClass(className) != null || className.getFqName().getFqName().equals("java.lang.String") || className.getFqName().getFqName().equals("java.lang.CharSequence") - || className.getFqName().getFqName().equals("java.lang.Object"); + || className.getFqName().getFqName().equals("java.lang.Object") + || className.getFqName().getFqName().equals("java.lang.Number"); } public boolean isGenericsArray(JetType type) { diff --git a/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeVariance.kt b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeVariance.kt index c66c998e196..272d8f4180c 100644 --- a/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeVariance.kt +++ b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeVariance.kt @@ -3,7 +3,7 @@ package test import java.util.* public open class WrongTypeVariance : Object() { - public open fun copy(p0 : List?, p1 : List?) : List? { + public open fun copy(p0 : List?, p1 : List?) : List? { throw UnsupportedOperationException() } } diff --git a/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeVariance.txt b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeVariance.txt index ddca82de9ef..2bcd8a6cccf 100644 --- a/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeVariance.txt +++ b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeVariance.txt @@ -2,5 +2,5 @@ namespace test public open class test.WrongTypeVariance : java.lang.Object { public final /*constructor*/ fun (): test.WrongTypeVariance - public open fun copy(/*0*/ p0: java.util.List?, /*1*/ p1: java.util.List?): java.util.List? + public open fun copy(/*0*/ p0: java.util.List?, /*1*/ p1: java.util.List?): java.util.List? } diff --git a/compiler/testData/readKotlinBinaryClass/type/jlNumber.kt b/compiler/testData/readKotlinBinaryClass/type/jlNumber.kt new file mode 100644 index 00000000000..6b0bf92600a --- /dev/null +++ b/compiler/testData/readKotlinBinaryClass/type/jlNumber.kt @@ -0,0 +1,3 @@ +package test + +fun number(): java.lang.Number = throw Exception() diff --git a/compiler/testData/readKotlinBinaryClass/type/jlNumber.txt b/compiler/testData/readKotlinBinaryClass/type/jlNumber.txt new file mode 100644 index 00000000000..4ed101484f1 --- /dev/null +++ b/compiler/testData/readKotlinBinaryClass/type/jlNumber.txt @@ -0,0 +1,3 @@ +namespace test + +internal final fun number(): java.lang.Number diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java index 66104e0461b..f4e03071e39 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java @@ -701,6 +701,11 @@ public class LazyResolveNamespaceComparingTestGenerated extends AbstractLazyReso doTestSinglePackage("compiler/testData/readKotlinBinaryClass/type/jlIntegerQ.kt"); } + @TestMetadata("jlNumber.kt") + public void testJlNumber() throws Exception { + doTestSinglePackage("compiler/testData/readKotlinBinaryClass/type/jlNumber.kt"); + } + @TestMetadata("jlObject.kt") public void testJlObject() throws Exception { doTestSinglePackage("compiler/testData/readKotlinBinaryClass/type/jlObject.kt"); diff --git a/runtime/src/org/jetbrains/jet/rt/signature/JetSignatureReader.java b/runtime/src/org/jetbrains/jet/rt/signature/JetSignatureReader.java index a084aa76076..bf2e4bdadf4 100644 --- a/runtime/src/org/jetbrains/jet/rt/signature/JetSignatureReader.java +++ b/runtime/src/org/jetbrains/jet/rt/signature/JetSignatureReader.java @@ -96,7 +96,7 @@ public class JetSignatureReader { pos = end + 1; c = signature.charAt(pos); - if (c == 'L' || c == '[' || c == 'T' || c == '?') { + if (c == 'L' || c == 'M' || c == '[' || c == 'T' || c == '?') { pos = parseType(signature, pos, parameterVisitor.visitClassBound()); }