Nullability for java.lang.ref.Reference.get

This commit is contained in:
Ilya Gorbunov
2016-12-04 20:02:24 +03:00
parent 84a7e3c032
commit c66b3b8ef9
6 changed files with 103 additions and 0 deletions
@@ -0,0 +1,15 @@
import java.lang.ref.*
fun notNull(r: SoftReference<String>) {
r.<caret>get()
}
fun nullable(r: SoftReference<String?>) {
r.<caret>get()
}
fun platform() {
val r = SoftReference("x")
r.<caret>get()
}
@@ -0,0 +1,23 @@
import java.lang.ref.*
fun notNull(r: SoftReference<String>) {
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<String?>) {
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
}
@@ -0,0 +1,15 @@
import java.lang.ref.*
fun notNull(r: WeakReference<String>) {
r.<caret>get()
}
fun nullable(r: WeakReference<String?>) {
r.<caret>get()
}
fun platform() {
val r = WeakReference("x")
r.<caret>get()
}
@@ -0,0 +1,23 @@
import java.lang.ref.*
fun notNull(r: WeakReference<String>) {
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<String?>) {
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
}
@@ -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);
}
}
}
@@ -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)