diff --git a/compiler/testData/resolvedCalls/enhancedSignatures/references/softReference.kt b/compiler/testData/resolvedCalls/enhancedSignatures/references/softReference.kt new file mode 100644 index 00000000000..bfbf3cd372f --- /dev/null +++ b/compiler/testData/resolvedCalls/enhancedSignatures/references/softReference.kt @@ -0,0 +1,15 @@ +import java.lang.ref.* + +fun notNull(r: SoftReference) { + r.get() +} + +fun nullable(r: SoftReference) { + r.get() +} + +fun platform() { + val r = SoftReference("x") + r.get() +} + diff --git a/compiler/testData/resolvedCalls/enhancedSignatures/references/softReference.txt b/compiler/testData/resolvedCalls/enhancedSignatures/references/softReference.txt new file mode 100644 index 00000000000..c64e18037a5 --- /dev/null +++ b/compiler/testData/resolvedCalls/enhancedSignatures/references/softReference.txt @@ -0,0 +1,23 @@ +import java.lang.ref.* + +fun notNull(r: SoftReference) { + r.get() + // SUCCESS + // ORIGINAL: fun get(): T? defined in java.lang.ref.SoftReference + // SUBSTITUTED: fun get(): String? defined in java.lang.ref.SoftReference +} + +fun nullable(r: SoftReference) { + r.get() + // SUCCESS + // ORIGINAL: fun get(): T? defined in java.lang.ref.SoftReference + // SUBSTITUTED: fun get(): String? defined in java.lang.ref.SoftReference +} + +fun platform() { + val r = SoftReference("x") + r.get() + // SUCCESS + // ORIGINAL: fun get(): T? defined in java.lang.ref.SoftReference + // SUBSTITUTED: fun get(): String? defined in java.lang.ref.SoftReference +} diff --git a/compiler/testData/resolvedCalls/enhancedSignatures/references/weakReference.kt b/compiler/testData/resolvedCalls/enhancedSignatures/references/weakReference.kt new file mode 100644 index 00000000000..d3fae1672a6 --- /dev/null +++ b/compiler/testData/resolvedCalls/enhancedSignatures/references/weakReference.kt @@ -0,0 +1,15 @@ +import java.lang.ref.* + +fun notNull(r: WeakReference) { + r.get() +} + +fun nullable(r: WeakReference) { + r.get() +} + +fun platform() { + val r = WeakReference("x") + r.get() +} + diff --git a/compiler/testData/resolvedCalls/enhancedSignatures/references/weakReference.txt b/compiler/testData/resolvedCalls/enhancedSignatures/references/weakReference.txt new file mode 100644 index 00000000000..c606c256c52 --- /dev/null +++ b/compiler/testData/resolvedCalls/enhancedSignatures/references/weakReference.txt @@ -0,0 +1,23 @@ +import java.lang.ref.* + +fun notNull(r: WeakReference) { + r.get() + // SUCCESS + // ORIGINAL: fun get(): T? defined in java.lang.ref.WeakReference + // SUBSTITUTED: fun get(): String? defined in java.lang.ref.WeakReference +} + +fun nullable(r: WeakReference) { + r.get() + // SUCCESS + // ORIGINAL: fun get(): T? defined in java.lang.ref.WeakReference + // SUBSTITUTED: fun get(): String? defined in java.lang.ref.WeakReference +} + +fun platform() { + val r = WeakReference("x") + r.get() + // SUCCESS + // ORIGINAL: fun get(): T? defined in java.lang.ref.WeakReference + // SUBSTITUTED: fun get(): String? defined in java.lang.ref.WeakReference +} diff --git a/compiler/tests-java8/tests/org/jetbrains/kotlin/resolve/calls/EnhancedSignaturesResolvedCallsTestGenerated.java b/compiler/tests-java8/tests/org/jetbrains/kotlin/resolve/calls/EnhancedSignaturesResolvedCallsTestGenerated.java index 10407a17d2d..d9d12689d13 100644 --- a/compiler/tests-java8/tests/org/jetbrains/kotlin/resolve/calls/EnhancedSignaturesResolvedCallsTestGenerated.java +++ b/compiler/tests-java8/tests/org/jetbrains/kotlin/resolve/calls/EnhancedSignaturesResolvedCallsTestGenerated.java @@ -197,4 +197,25 @@ public class EnhancedSignaturesResolvedCallsTestGenerated extends AbstractEnhanc doTest(fileName); } } + + @TestMetadata("compiler/testData/resolvedCalls/enhancedSignatures/references") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class References extends AbstractEnhancedSignaturesResolvedCallsTest { + public void testAllFilesPresentInReferences() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/resolvedCalls/enhancedSignatures/references"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.ANY, true); + } + + @TestMetadata("softReference.kt") + public void testSoftReference() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/resolvedCalls/enhancedSignatures/references/softReference.kt"); + doTest(fileName); + } + + @TestMetadata("weakReference.kt") + public void testWeakReference() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/resolvedCalls/enhancedSignatures/references/weakReference.kt"); + doTest(fileName); + } + } } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/typeEnhancement/predefinedEnhancementInfo.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/typeEnhancement/predefinedEnhancementInfo.kt index ed811c9ac6f..e3502c9242e 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/typeEnhancement/predefinedEnhancementInfo.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/typeEnhancement/predefinedEnhancementInfo.kt @@ -144,6 +144,12 @@ val PREDEFINED_FUNCTION_ENHANCEMENT_INFO_BY_SIGNATURE = signatures { } } + forClass(javaLang("ref/Reference")) { + function("get") { + returns(JLObject, NULLABLE) + } + } + forClass(JFPredicate) { function("test") { parameter(JLObject, NOT_PLATFORM)