[FIR] Add checker for uninitialized properties
This commit is contained in:
Vendored
+7
-7
@@ -9,13 +9,13 @@ fun doSmth(i: Int) {}
|
||||
|
||||
fun t1(b : Boolean) {
|
||||
val v : Int
|
||||
if (v == 0) {}
|
||||
if (<!UNINITIALIZED_VARIABLE!>v<!> == 0) {}
|
||||
|
||||
var u: String
|
||||
if (b) {
|
||||
u = "s"
|
||||
}
|
||||
doSmth(u)
|
||||
doSmth(<!UNINITIALIZED_VARIABLE!>u<!>)
|
||||
|
||||
var r: String
|
||||
if (b) {
|
||||
@@ -28,10 +28,10 @@ fun t1(b : Boolean) {
|
||||
|
||||
var t: String
|
||||
if (b)
|
||||
doSmth(t)
|
||||
doSmth(<!UNINITIALIZED_VARIABLE!>t<!>)
|
||||
else
|
||||
t = "ss"
|
||||
doSmth(t) //repeat for t
|
||||
doSmth(<!UNINITIALIZED_VARIABLE!>t<!>) //repeat for t
|
||||
|
||||
val i = 3
|
||||
doSmth(i)
|
||||
@@ -207,7 +207,7 @@ class LocalValsVsProperties(val a: Int, w: Int) : Open(a, w) {
|
||||
val r : Int
|
||||
doSmth(x)
|
||||
doSmth(y)
|
||||
doSmth(r)
|
||||
doSmth(<!UNINITIALIZED_VARIABLE!>r<!>)
|
||||
doSmth(a)
|
||||
}
|
||||
var xx = w
|
||||
@@ -257,7 +257,7 @@ class ClassObject() {
|
||||
|
||||
fun foo() {
|
||||
val a : Int
|
||||
doSmth(a)
|
||||
doSmth(<!UNINITIALIZED_VARIABLE!>a<!>)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -317,7 +317,7 @@ object TestObjectDeclaration {
|
||||
if (1 < 3) {
|
||||
i = 10
|
||||
}
|
||||
doSmth(i)
|
||||
doSmth(<!UNINITIALIZED_VARIABLE!>i<!>)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -12,7 +12,7 @@ val a: Int
|
||||
return d
|
||||
}
|
||||
|
||||
return b
|
||||
return <!UNINITIALIZED_VARIABLE!>b<!>
|
||||
}
|
||||
|
||||
class A {
|
||||
@@ -21,7 +21,7 @@ class A {
|
||||
val b: Int
|
||||
val c: Int
|
||||
42
|
||||
return b
|
||||
return <!UNINITIALIZED_VARIABLE!>b<!>
|
||||
}
|
||||
|
||||
fun foo() {
|
||||
@@ -31,7 +31,7 @@ class A {
|
||||
val b: Int
|
||||
val c: Int
|
||||
42
|
||||
return b
|
||||
return <!UNINITIALIZED_VARIABLE!>b<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ fun foo() {
|
||||
x = 42
|
||||
}
|
||||
// Error!
|
||||
x.hashCode()
|
||||
<!UNINITIALIZED_VARIABLE!>x<!>.hashCode()
|
||||
}
|
||||
|
||||
fun bar() {
|
||||
|
||||
+5
-5
@@ -8,7 +8,7 @@ fun foo() {
|
||||
}
|
||||
}
|
||||
// Error! See KT-10042
|
||||
x.length
|
||||
<!UNINITIALIZED_VARIABLE!>x<!>.length
|
||||
}
|
||||
|
||||
fun bar() {
|
||||
@@ -19,7 +19,7 @@ fun bar() {
|
||||
}
|
||||
}
|
||||
// Ok
|
||||
x.length
|
||||
<!UNINITIALIZED_VARIABLE!>x<!>.length
|
||||
}
|
||||
|
||||
fun gav() {
|
||||
@@ -31,7 +31,7 @@ fun gav() {
|
||||
}
|
||||
}
|
||||
// Error! See KT-10042
|
||||
x.length
|
||||
<!UNINITIALIZED_VARIABLE!>x<!>.length
|
||||
val y: String
|
||||
class C(val s: String) {
|
||||
constructor(): this("") {
|
||||
@@ -39,7 +39,7 @@ fun gav() {
|
||||
y = s
|
||||
}
|
||||
}
|
||||
y.length
|
||||
<!UNINITIALIZED_VARIABLE!>y<!>.length
|
||||
}
|
||||
|
||||
open class Gau(val s: String)
|
||||
@@ -53,7 +53,7 @@ fun gau() {
|
||||
}
|
||||
}
|
||||
// Ok
|
||||
x.length
|
||||
<!UNINITIALIZED_VARIABLE!>x<!>.length
|
||||
val y: String
|
||||
fun local() {
|
||||
object: Any() {
|
||||
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fun foo() {
|
||||
var x: Int
|
||||
fun bar() {
|
||||
x = 42
|
||||
}
|
||||
x.hashCode()
|
||||
bar()
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
fun foo() {
|
||||
var x: Int
|
||||
fun bar() {
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
//KT-2369 Variable is not marked as uninitialized in 'finally' section
|
||||
|
||||
fun main() {
|
||||
var x : Int
|
||||
try {
|
||||
throw Exception()
|
||||
}
|
||||
finally {
|
||||
doSmth(x + 1)
|
||||
}
|
||||
}
|
||||
|
||||
fun doSmth(a: Any?) = a
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
//KT-2369 Variable is not marked as uninitialized in 'finally' section
|
||||
|
||||
fun main() {
|
||||
|
||||
@@ -12,7 +12,7 @@ private fun doTest() : Int {
|
||||
return 0 ;
|
||||
}
|
||||
finally {
|
||||
if(list != null) { // Must be an ERROR
|
||||
if(<!UNINITIALIZED_VARIABLE!>list<!> != null) { // Must be an ERROR
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ val o = object {
|
||||
p.x = 4
|
||||
|
||||
val z : Int
|
||||
doSmth(z)
|
||||
doSmth(<!UNINITIALIZED_VARIABLE!>z<!>)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ class A {
|
||||
val a : Int = 1
|
||||
get() {
|
||||
val x : Int
|
||||
doSmth(x)
|
||||
doSmth(<!UNINITIALIZED_VARIABLE!>x<!>)
|
||||
return field
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+3
-3
@@ -15,7 +15,7 @@ fun f1(flag: Boolean) {
|
||||
// KT-13612: reassignment
|
||||
n = 3
|
||||
}
|
||||
n.hashCode()
|
||||
<!UNINITIALIZED_VARIABLE!>n<!>.hashCode()
|
||||
}
|
||||
|
||||
fun f2(flag: Boolean) {
|
||||
@@ -32,7 +32,7 @@ fun f2(flag: Boolean) {
|
||||
// KT-13612: reassignment
|
||||
n = 3
|
||||
}
|
||||
n.hashCode()
|
||||
<!UNINITIALIZED_VARIABLE!>n<!>.hashCode()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,6 +50,6 @@ fun f3(flag: Boolean) {
|
||||
// KT-13612: reassignment
|
||||
n = 3
|
||||
}
|
||||
n.hashCode()
|
||||
<!UNINITIALIZED_VARIABLE!>n<!>.hashCode()
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -10,6 +10,6 @@ class C {
|
||||
|
||||
fun foo() {
|
||||
val a : Int
|
||||
a + 1
|
||||
a + 1
|
||||
<!UNINITIALIZED_VARIABLE!>a<!> + 1
|
||||
<!UNINITIALIZED_VARIABLE!>a<!> + 1
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -23,14 +23,14 @@ fun test2() {
|
||||
fun test3() {
|
||||
val f = {
|
||||
val a : Int
|
||||
doSmth(a)
|
||||
doSmth(<!UNINITIALIZED_VARIABLE!>a<!>)
|
||||
}
|
||||
}
|
||||
|
||||
fun test4() {
|
||||
doSmth {
|
||||
val a : Int
|
||||
doSmth(a)
|
||||
doSmth(<!UNINITIALIZED_VARIABLE!>a<!>)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
fun bar(f: () -> Unit) = f()
|
||||
|
||||
fun foo() {
|
||||
var v: Any
|
||||
bar { v.hashCode() }
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
fun bar(f: () -> Unit) = f()
|
||||
|
||||
fun foo() {
|
||||
|
||||
Reference in New Issue
Block a user