Introduce inspection detecting self-assignment of properties
So #KT-20714 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
ffa9478d0c
commit
204d9e3423
@@ -0,0 +1 @@
|
||||
org.jetbrains.kotlin.idea.inspections.SelfAssignmentInspection
|
||||
@@ -0,0 +1,17 @@
|
||||
// PROBLEM: none
|
||||
// WITH_RUNTIME
|
||||
|
||||
// Minimized from KT-20714 itself
|
||||
class ServerUser {
|
||||
var id = ""
|
||||
var city = ""
|
||||
|
||||
fun toClientUser() = ClientUser().apply {
|
||||
id = <caret>this@ServerUser.id
|
||||
city = this@ServerUser.city
|
||||
}
|
||||
}
|
||||
|
||||
class ClientUser {
|
||||
var id = ""
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
// PROBLEM: Variable 'city' is assigned to itself
|
||||
// WITH_RUNTIME
|
||||
// FIX: Remove self assignment
|
||||
|
||||
// Minimized from KT-20714 itself
|
||||
class ServerUser {
|
||||
var id = ""
|
||||
var city = ""
|
||||
|
||||
fun toClientUser() = ClientUser().apply {
|
||||
id = this@ServerUser.id
|
||||
city = <caret>this@ServerUser.city
|
||||
}
|
||||
}
|
||||
|
||||
class ClientUser {
|
||||
var id = ""
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
// PROBLEM: Variable 'city' is assigned to itself
|
||||
// WITH_RUNTIME
|
||||
// FIX: Remove self assignment
|
||||
|
||||
// Minimized from KT-20714 itself
|
||||
class ServerUser {
|
||||
var id = ""
|
||||
var city = ""
|
||||
|
||||
fun toClientUser() = ClientUser().apply {
|
||||
id = this@ServerUser.id
|
||||
}
|
||||
}
|
||||
|
||||
class ClientUser {
|
||||
var id = ""
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
// PROBLEM: none
|
||||
// SKIP_ERRORS_BEFORE
|
||||
// SKIP_ERRORS_AFTER
|
||||
|
||||
class Point {
|
||||
val x: Int
|
||||
|
||||
constructor(x: Int) {
|
||||
x = <caret>x
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
// PROBLEM: none
|
||||
// WITH_RUNTIME
|
||||
|
||||
class Test {
|
||||
var foo = 1
|
||||
|
||||
fun test() {
|
||||
with (Test()) {
|
||||
this@Test.foo = <caret>this.foo // Different receivers
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
// PROBLEM: none
|
||||
// WITH_RUNTIME
|
||||
|
||||
class Test {
|
||||
var foo = 1
|
||||
|
||||
fun test() {
|
||||
with (Test()) {
|
||||
this@Test.foo = <caret>foo // Different receiver
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
// PROBLEM: none
|
||||
// WITH_RUNTIME
|
||||
|
||||
fun test() {
|
||||
val list = mutableListOf(1, 2, 3)
|
||||
list[1] = <caret>list[1]
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
// PROBLEM: none
|
||||
// SKIP_ERRORS_BEFORE
|
||||
// SKIP_ERRORS_AFTER
|
||||
|
||||
fun test() {
|
||||
val bar = 1
|
||||
bar = <caret>bar
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
// PROBLEM: Variable 'bar' is assigned to itself
|
||||
// FIX: Remove self assignment
|
||||
|
||||
fun test() {
|
||||
var bar = 1
|
||||
bar = <caret>bar
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
// PROBLEM: Variable 'bar' is assigned to itself
|
||||
// FIX: Remove self assignment
|
||||
|
||||
fun test() {
|
||||
var bar = 1
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
// PROBLEM: none
|
||||
|
||||
fun test() {
|
||||
var bar = 1
|
||||
bar += <caret>bar
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
// PROBLEM: none
|
||||
// WITH_RUNTIME
|
||||
|
||||
class Bar(var foo: Int = 1)
|
||||
|
||||
class Test(var foo: Int = 2) {
|
||||
fun test() {
|
||||
Bar().apply {
|
||||
this.foo = <caret>this@Test.foo
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
// PROBLEM: none
|
||||
|
||||
open class Test {
|
||||
open var foo = 1
|
||||
|
||||
fun test() {
|
||||
foo = <caret>this.foo
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
// PROBLEM: none
|
||||
// SKIP_ERRORS_BEFORE
|
||||
// SKIP_ERRORS_AFTER
|
||||
|
||||
fun test(bar: Int) {
|
||||
bar = <caret>bar
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
// PROBLEM: Variable 'foo' is assigned to itself
|
||||
// FIX: Remove self assignment
|
||||
|
||||
class Test {
|
||||
var foo = 1
|
||||
|
||||
fun test() {
|
||||
foo = <caret>foo
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
// PROBLEM: Variable 'foo' is assigned to itself
|
||||
// FIX: Remove self assignment
|
||||
|
||||
class Test {
|
||||
var foo = 1
|
||||
|
||||
fun test() {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
// PROBLEM: Variable 'foo' is assigned to itself
|
||||
// FIX: Remove self assignment
|
||||
|
||||
class Test {
|
||||
var foo = 1
|
||||
|
||||
fun test() {
|
||||
foo = <caret>this.foo
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
// PROBLEM: Variable 'foo' is assigned to itself
|
||||
// FIX: Remove self assignment
|
||||
|
||||
class Test {
|
||||
var foo = 1
|
||||
|
||||
fun test() {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
// PROBLEM: Variable 'foo' is assigned to itself
|
||||
// FIX: Remove self assignment
|
||||
|
||||
class Test {
|
||||
var foo = 1
|
||||
|
||||
fun test() {
|
||||
foo = <caret>this@Test.foo
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
// PROBLEM: Variable 'foo' is assigned to itself
|
||||
// FIX: Remove self assignment
|
||||
|
||||
class Test {
|
||||
var foo = 1
|
||||
|
||||
fun test() {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
// PROBLEM: none
|
||||
// WITH_RUNTIME
|
||||
|
||||
import kotlin.properties.ReadWriteProperty
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Test {
|
||||
var foo: Int by Delegate()
|
||||
|
||||
fun test() {
|
||||
foo = <caret>foo
|
||||
}
|
||||
}
|
||||
|
||||
class Delegate : ReadWriteProperty<Test, Int> {
|
||||
override fun getValue(thisRef: Test, property: KProperty<*>): Int = 1
|
||||
override fun setValue(thisRef: Test, property: KProperty<*>, value: Int) {
|
||||
println()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
// PROBLEM: none
|
||||
// WITH_RUNTIME
|
||||
|
||||
class Test {
|
||||
var foo = 1
|
||||
get() {
|
||||
println()
|
||||
return 2
|
||||
}
|
||||
|
||||
fun test() {
|
||||
foo = <caret>foo
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
// PROBLEM: none
|
||||
// WITH_RUNTIME
|
||||
|
||||
class Test {
|
||||
var foo = 1
|
||||
set(value) {
|
||||
println(value)
|
||||
}
|
||||
|
||||
fun test() {
|
||||
foo = <caret>foo
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
// PROBLEM: Variable 'foo' is assigned to itself
|
||||
// FIX: Remove self assignment
|
||||
|
||||
class Test {
|
||||
var foo = 1
|
||||
|
||||
fun test() {
|
||||
this.foo = <caret>this@Test.foo
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
// PROBLEM: Variable 'foo' is assigned to itself
|
||||
// FIX: Remove self assignment
|
||||
|
||||
class Test {
|
||||
var foo = 1
|
||||
|
||||
fun test() {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
// PROBLEM: Variable 'foo' is assigned to itself
|
||||
// WITH_RUNTIME
|
||||
// FIX: Remove self assignment
|
||||
|
||||
class Test {
|
||||
var foo = 1
|
||||
|
||||
fun test() {
|
||||
with (Test()) {
|
||||
this.foo = <caret>foo
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
// PROBLEM: Variable 'foo' is assigned to itself
|
||||
// WITH_RUNTIME
|
||||
// FIX: Remove self assignment
|
||||
|
||||
class Test {
|
||||
var foo = 1
|
||||
|
||||
fun test() {
|
||||
with (Test()) {
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
// PROBLEM: none
|
||||
|
||||
fun test(bar: Int) {
|
||||
var bar = <caret>bar
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
// PROBLEM: none
|
||||
|
||||
class Point(var x: Int) {
|
||||
fun copyFrom(other: Point) {
|
||||
x = <caret>other.x
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user