Add IDEA data-flow analysis to guess nullability
Add "if return..." folding to "return if"
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
internal class C {
|
||||
fun foo(b: Boolean): String? {
|
||||
if (b) {
|
||||
return "abc"
|
||||
return if (b) {
|
||||
"abc"
|
||||
} else {
|
||||
return null
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
fun foo(s: String?, b: Boolean): Int {
|
||||
if (s == null) println("null")
|
||||
if (b) return s!!.length
|
||||
return 10
|
||||
return if (b) s!!.length else 10
|
||||
}
|
||||
+1
-1
@@ -25,7 +25,7 @@ internal class C : Base(), I {
|
||||
return ""
|
||||
}
|
||||
|
||||
override fun zoo(o: Any?): String? {
|
||||
override fun zoo(o: Any?): String {
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
+1
-4
@@ -1,8 +1,5 @@
|
||||
internal class A {
|
||||
fun foo(s: String?): Int {
|
||||
if (s != null) {
|
||||
return s.length
|
||||
}
|
||||
return -1
|
||||
return s?.length ?: -1
|
||||
}
|
||||
}
|
||||
+1
-2
@@ -1,4 +1,3 @@
|
||||
// ERROR: Type mismatch: inferred type is String? but String was expected
|
||||
// ERROR: Type mismatch: inferred type is Int? but Int was expected
|
||||
// ERROR: Type inference failed. Please try to specify type arguments explicitly.
|
||||
// ERROR: Using 'remove(Int): T' is an error. Use removeAt(index) instead.
|
||||
@@ -50,7 +49,7 @@ class Test {
|
||||
|
||||
}
|
||||
|
||||
fun foo2(s: String) {
|
||||
fun foo2(s: String?) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
// 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 var nullableInitializerField = nullableString(3)
|
||||
private val nullableInitializerFieldFinal = nullableString(3)
|
||||
var nullableInitializerPublicField: String = nullableString(3)
|
||||
var nullableInitializerPublicField = nullableString(3)
|
||||
|
||||
fun testProperty() {
|
||||
nullableInitializerField = "aaa"
|
||||
|
||||
nullableInitializerField[0]
|
||||
nullableInitializerField!![0]
|
||||
nullableInitializerFieldFinal!![0]
|
||||
nullableInitializerPublicField[0]
|
||||
nullableInitializerPublicField!![0]
|
||||
}
|
||||
|
||||
fun testLocalVariable() {
|
||||
|
||||
Reference in New Issue
Block a user