From 5cc043314d884af9e08f4caf562857f137686276 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 10 Jul 2012 18:31:05 +0400 Subject: [PATCH] KT-2376 java.lang.Number should be visible in Kotlin as jet.Number #KT-2376 Fixed --- .../jet/lang/resolve/java/JavaTypeTransformer.java | 2 ++ .../jet/lang/types/lang/JetStandardLibrary.java | 8 ++++++++ .../testData/diagnostics/tests/regressions/kt2376.kt | 10 ++++++++++ .../jet/checkers/JetDiagnosticsTestGenerated.java | 10 +++++++++- 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/diagnostics/tests/regressions/kt2376.kt diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaTypeTransformer.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaTypeTransformer.java index 62dfab83922..7a8ba196c2f 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaTypeTransformer.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaTypeTransformer.java @@ -258,6 +258,7 @@ public class JavaTypeTransformer { classTypesMap.put(new FqName("java.lang.String"), JetStandardLibrary.getInstance().getNullableStringType()); classTypesMap.put(new FqName("java.lang.CharSequence"), JetStandardLibrary.getInstance().getNullableCharSequenceType()); classTypesMap.put(new FqName("java.lang.Throwable"), JetStandardLibrary.getInstance().getNullableThrowableType()); + classTypesMap.put(new FqName("java.lang.Number"), JetStandardLibrary.getInstance().getNullableNumberType()); } return classTypesMap; } @@ -277,6 +278,7 @@ public class JavaTypeTransformer { classDescriptorMap.put(new FqName("java.lang.String"), JetStandardLibrary.getInstance().getString()); classDescriptorMap.put(new FqName("java.lang.CharSequence"), JetStandardLibrary.getInstance().getCharSequence()); classDescriptorMap.put(new FqName("java.lang.Throwable"), JetStandardLibrary.getInstance().getThrowable()); + classDescriptorMap.put(new FqName("java.lang.Number"), JetStandardLibrary.getInstance().getNumber()); } return classDescriptorMap; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/JetStandardLibrary.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/JetStandardLibrary.java index dca5c784161..83246c7d0ef 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/JetStandardLibrary.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/JetStandardLibrary.java @@ -98,6 +98,7 @@ public class JetStandardLibrary { private ClassDescriptor throwableClass; private JetType numberType; + private JetType nullableNumberType; private JetType stringType; private JetType volatileType; private JetType nullableStringType; @@ -180,6 +181,7 @@ public class JetStandardLibrary { this.comparableClass = (ClassDescriptor) libraryScope.getClassifier(Name.identifier("Comparable")); this.numberType = new JetTypeImpl(getNumber()); + this.nullableNumberType = TypeUtils.makeNullable(numberType); this.stringType = new JetTypeImpl(getString()); this.charSequenceType = new JetTypeImpl(getCharSequence()); this.nullableCharSequenceType = TypeUtils.makeNullable(charSequenceType); @@ -519,6 +521,12 @@ public class JetStandardLibrary { } public JetType getNumberType() { + initStdClasses(); return numberType; } + + public JetType getNullableNumberType() { + initStdClasses(); + return nullableNumberType; + } } diff --git a/compiler/testData/diagnostics/tests/regressions/kt2376.kt b/compiler/testData/diagnostics/tests/regressions/kt2376.kt new file mode 100644 index 00000000000..91689a31354 --- /dev/null +++ b/compiler/testData/diagnostics/tests/regressions/kt2376.kt @@ -0,0 +1,10 @@ +// FILE: main.kt +//KT-2376 java.lang.Number should be visible in Kotlin as jet.Number +fun main(args: Array) { + Test().number(5.toInt()) +} + +// FILE: Test.java +public class Test { + void number(Number n){} +} diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index 07e3965ceb6..a387b154639 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -15,12 +15,15 @@ */ package org.jetbrains.jet.checkers; +import junit.framework.Assert; import junit.framework.Test; import junit.framework.TestSuite; + +import java.io.File; import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.test.TestMetadata; -import java.io.File; +import org.jetbrains.jet.checkers.AbstractJetDiagnosticsTest; /** This class is generated by {@link org.jetbrains.jet.checkers.AbstractJetDiagnosticsTest}. DO NOT MODIFY MANUALLY */ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { @@ -1924,6 +1927,11 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest("compiler/testData/diagnostics/tests/regressions/kt235.kt"); } + @TestMetadata("kt2376.kt") + public void testKt2376() throws Exception { + doTest("compiler/testData/diagnostics/tests/regressions/kt2376.kt"); + } + @TestMetadata("kt251.kt") public void testKt251() throws Exception { doTest("compiler/testData/diagnostics/tests/regressions/kt251.kt");