J2K: Get nullability from variable initializer when converting call
#KT-11534 In Progress
This commit is contained in:
+2
-4
@@ -1,5 +1,3 @@
|
||||
// ERROR: Type mismatch: inferred type is Passenger.PassChild? but Passenger.PassChild was expected
|
||||
// ERROR: Type mismatch: inferred type is Passenger.PassChild? but Passenger.PassChild was expected
|
||||
class Passenger {
|
||||
open class PassParent
|
||||
|
||||
@@ -18,9 +16,9 @@ class Passenger {
|
||||
val pass = provideNullable(1)
|
||||
if (1 == 2) {
|
||||
assert(pass != null)
|
||||
accept2(pass as PassChild?)
|
||||
accept2((pass as PassChild?)!!)
|
||||
}
|
||||
accept2(pass as PassChild?)
|
||||
accept2((pass as PassChild?)!!)
|
||||
}
|
||||
|
||||
fun accept1(p: PassChild) {
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class Test {
|
||||
public String nullableString(int p) {
|
||||
return p > 0 ? "response" : null;
|
||||
}
|
||||
|
||||
private String nullableInitializerField = nullableString(3);
|
||||
private String nullableInitializerFieldFinal = nullableString(3);
|
||||
public String nullableInitializerPublicField = nullableString(3);
|
||||
|
||||
public void testProperty() {
|
||||
nullableInitializerField = "aaa"
|
||||
|
||||
nullableInitializerField.charAt(0);
|
||||
nullableInitializerFieldFinal.charAt(0);
|
||||
nullableInitializerPublicField.charAt(0);
|
||||
}
|
||||
|
||||
public void testLocalVariable() {
|
||||
String nullableInitializerVal = nullableString(3);
|
||||
nullableInitializerVal.charAt(0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
// ERROR: Type mismatch: inferred type is String? but String was expected
|
||||
// ERROR: Type mismatch: inferred type is String? but String was expected
|
||||
class Test {
|
||||
fun nullableString(p: Int): String? {
|
||||
return if (p > 0) "response" else null
|
||||
}
|
||||
|
||||
private var nullableInitializerField: String = nullableString(3)
|
||||
private val nullableInitializerFieldFinal = nullableString(3)
|
||||
var nullableInitializerPublicField: String = nullableString(3)
|
||||
|
||||
fun testProperty() {
|
||||
nullableInitializerField = "aaa"
|
||||
|
||||
nullableInitializerField[0]
|
||||
nullableInitializerFieldFinal!![0]
|
||||
nullableInitializerPublicField[0]
|
||||
}
|
||||
|
||||
fun testLocalVariable() {
|
||||
val nullableInitializerVal = nullableString(3)
|
||||
nullableInitializerVal!![0]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class TestJava {
|
||||
public Object nullableObj(int p) {
|
||||
return p > 0 ? "response" : null;
|
||||
}
|
||||
|
||||
public String nullableInitializerFieldCast = (String) nullableObj(3);
|
||||
private String nullableInitializerPrivateFieldCast = (String) nullableObj(3);
|
||||
|
||||
public void testProperty() {
|
||||
nullableInitializerFieldCast.charAt(0);
|
||||
nullableInitializerPrivateFieldCast.charAt(0);
|
||||
}
|
||||
|
||||
public void testLocalVariable() {
|
||||
String nullableInitializerValCast = (String) nullableObj(3);
|
||||
|
||||
nullableInitializerValCast.charAt(0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
// ERROR: Type mismatch: inferred type is String? but String was expected
|
||||
class TestJava {
|
||||
fun nullableObj(p: Int): Any? {
|
||||
return if (p > 0) "response" else null
|
||||
}
|
||||
|
||||
var nullableInitializerFieldCast: String = nullableObj(3) as String?
|
||||
private val nullableInitializerPrivateFieldCast = nullableObj(3) as String?
|
||||
|
||||
fun testProperty() {
|
||||
nullableInitializerFieldCast[0]
|
||||
nullableInitializerPrivateFieldCast!![0]
|
||||
}
|
||||
|
||||
fun testLocalVariable() {
|
||||
val nullableInitializerValCast = nullableObj(3) as String?
|
||||
|
||||
nullableInitializerValCast!![0]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class Test {
|
||||
public String notNullString(int p) {
|
||||
return "response";
|
||||
}
|
||||
|
||||
private String notNullInitializerField = notNullString(3);
|
||||
public String notNullInitializerPublicField = notNullString(3);
|
||||
|
||||
public void testProperty() {
|
||||
notNullInitializerField.charAt(0);
|
||||
notNullInitializerPublicField.charAt(0);
|
||||
}
|
||||
|
||||
public void testLocalVariable() {
|
||||
String notNullInitializerVal = notNullString(3);
|
||||
notNullInitializerVal.charAt(0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
class Test {
|
||||
fun notNullString(p: Int): String {
|
||||
return "response"
|
||||
}
|
||||
|
||||
private val notNullInitializerField = notNullString(3)
|
||||
var notNullInitializerPublicField = notNullString(3)
|
||||
|
||||
fun testProperty() {
|
||||
notNullInitializerField[0]
|
||||
notNullInitializerPublicField[0]
|
||||
}
|
||||
|
||||
fun testLocalVariable() {
|
||||
val notNullInitializerVal = notNullString(3)
|
||||
notNullInitializerVal[0]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class TestJava {
|
||||
private String notNullInitializerFieldNullableUsage = "aaa";
|
||||
private String notNullInitializerFieldNotNullUsage = "aaa";
|
||||
|
||||
private String nullInitializerFieldNullableUsage = null;
|
||||
private String nullInitializerFieldNotNullUsage = null;
|
||||
|
||||
public void testNotNull(@Nullable Object obj) {
|
||||
if (true) {
|
||||
notNullInitializerFieldNullableUsage = (String) obj;
|
||||
notNullInitializerFieldNotNullUsage = "str";
|
||||
|
||||
notNullInitializerFieldNullableUsage.charAt(1);
|
||||
notNullInitializerFieldNotNullUsage.charAt(1);
|
||||
}
|
||||
else {
|
||||
nullInitializerFieldNullableUsage = (String) obj;
|
||||
nullInitializerFieldNotNullUsage = "str";
|
||||
|
||||
nullInitializerFieldNullableUsage.charAt(1);
|
||||
nullInitializerFieldNotNullUsage.charAt(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
// ERROR: Type mismatch: inferred type is String? but String was expected
|
||||
class TestJava {
|
||||
private var notNullInitializerFieldNullableUsage = "aaa"
|
||||
private var notNullInitializerFieldNotNullUsage = "aaa"
|
||||
|
||||
private var nullInitializerFieldNullableUsage: String? = null
|
||||
private var nullInitializerFieldNotNullUsage: String? = null
|
||||
|
||||
fun testNotNull(obj: Any?) {
|
||||
if (true) {
|
||||
notNullInitializerFieldNullableUsage = obj as String?
|
||||
notNullInitializerFieldNotNullUsage = "str"
|
||||
|
||||
notNullInitializerFieldNullableUsage[1]
|
||||
notNullInitializerFieldNotNullUsage[1]
|
||||
} else {
|
||||
nullInitializerFieldNullableUsage = obj as String?
|
||||
nullInitializerFieldNotNullUsage = "str"
|
||||
|
||||
nullInitializerFieldNullableUsage!![1]
|
||||
nullInitializerFieldNotNullUsage!![1]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user