136 lines
2.5 KiB
Kotlin
Vendored
136 lines
2.5 KiB
Kotlin
Vendored
// !DIAGNOSTICS: +UNUSED_VALUE, +UNUSED_CHANGED_VALUE, +UNUSED_PARAMETER, +UNUSED_VARIABLE
|
|
|
|
package unused_variables
|
|
|
|
fun testSimpleCases() {
|
|
var i = <!VARIABLE_WITH_REDUNDANT_INITIALIZER!>2<!>
|
|
<!UNUSED_VALUE!>i =<!> 34
|
|
i = 34
|
|
doSmth(i)
|
|
<!UNUSED_VALUE!>i =<!> 5
|
|
|
|
var j = 2
|
|
j = <!UNUSED_CHANGED_VALUE!>j++<!>
|
|
<!UNUSED_VALUE!>j =<!> <!UNUSED_CHANGED_VALUE!>j--<!>
|
|
}
|
|
|
|
class IncDec() {
|
|
operator fun inc() : IncDec = this
|
|
operator fun dec() : IncDec = this
|
|
}
|
|
|
|
class MyTest() {
|
|
fun testIncDec() {
|
|
var x = IncDec()
|
|
x++
|
|
++x
|
|
x--
|
|
--x
|
|
x = <!UNUSED_CHANGED_VALUE!>x++<!>
|
|
x = <!UNUSED_CHANGED_VALUE!>x--<!>
|
|
x = ++x
|
|
<!UNUSED_VALUE!>x =<!> --x
|
|
}
|
|
|
|
var a: String = "s"
|
|
set(v: String) {
|
|
var i: Int = 23
|
|
doSmth(i)
|
|
<!UNUSED_VALUE!>i =<!> 34
|
|
field = v
|
|
}
|
|
|
|
init {
|
|
a = "rr"
|
|
}
|
|
|
|
fun testSimple() {
|
|
a = "rro"
|
|
|
|
var <!ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE!>i<!> = 1;
|
|
<!UNUSED_VALUE!>i =<!> 34;
|
|
<!UNUSED_VALUE!>i =<!> 456;
|
|
}
|
|
|
|
fun testWhile() {
|
|
var a : Any? = true
|
|
var b : Any? = 34
|
|
while (a is Any) {
|
|
a = null
|
|
}
|
|
while (b != null) {
|
|
<!UNUSED_VALUE!>a =<!> null
|
|
}
|
|
}
|
|
|
|
fun testIf() {
|
|
var a : Any
|
|
if (1 < 2) {
|
|
a = 23
|
|
}
|
|
else {
|
|
a = "ss"
|
|
doSmth(<!DEBUG_INFO_SMARTCAST!>a<!>)
|
|
}
|
|
doSmth(a)
|
|
|
|
if (1 < 2) {
|
|
<!UNUSED_VALUE!>a =<!> 23
|
|
}
|
|
else {
|
|
<!UNUSED_VALUE!>a =<!> "ss"
|
|
}
|
|
}
|
|
|
|
fun testFor() {
|
|
for (i in 1..10) {
|
|
doSmth(i)
|
|
}
|
|
}
|
|
|
|
fun doSmth(<!UNUSED_PARAMETER!>s<!>: String) {}
|
|
fun doSmth(<!UNUSED_PARAMETER!>a<!>: Any) {}
|
|
}
|
|
|
|
fun testInnerFunctions() {
|
|
var <!ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE!>y<!> = 1
|
|
fun foo() {
|
|
y = 1
|
|
}
|
|
var z = 1
|
|
fun bar() {
|
|
doSmth(z)
|
|
}
|
|
}
|
|
|
|
fun testFunctionLiterals() {
|
|
var x = 1
|
|
var <!UNUSED_VARIABLE!>fl<!> = {
|
|
x
|
|
}
|
|
var y = 2
|
|
var <!UNUSED_VARIABLE!>fl1<!> = {
|
|
doSmth(y)
|
|
}
|
|
}
|
|
|
|
interface Trait {
|
|
fun foo()
|
|
}
|
|
|
|
fun testObject() : Trait {
|
|
val x = 24
|
|
val o = object : Trait {
|
|
val y : Int //in this case y should not be marked as unused
|
|
get() = 55
|
|
|
|
override fun foo() {
|
|
doSmth(x)
|
|
}
|
|
}
|
|
|
|
return o
|
|
}
|
|
|
|
fun doSmth(<!UNUSED_PARAMETER!>i<!> : Int) {}
|