Convert "lift return / assignment" intentions into a single inspection

Also includes minor test fix, related to KT-14900
This commit is contained in:
Mikhail Glukhikh
2017-06-27 13:01:33 +03:00
committed by Mikhail Glukhikh
parent 8f33bd0768
commit 2d1abda9a1
91 changed files with 373 additions and 480 deletions
@@ -0,0 +1 @@
org.jetbrains.kotlin.idea.inspections.LiftReturnOrAssignmentInspection
@@ -0,0 +1,16 @@
// WITH_RUNTIME
fun test(x: Any) {
var res: String
<caret>when (x) {
is String ->
if (x.length > 3) res = "long string"
else res = "short string"
is Int ->
if (x > 999 || x < -99) res = "long int"
else res = "short int"
is Long ->
TODO()
else ->
res = "I don't know"
}
}
@@ -0,0 +1,16 @@
// WITH_RUNTIME
fun test(x: Any) {
var res: String
<caret>res = when (x) {
is String ->
if (x.length > 3) "long string"
else "short string"
is Int ->
if (x > 999 || x < -99) "long int"
else "short int"
is Long ->
TODO()
else ->
"I don't know"
}
}
@@ -0,0 +1,23 @@
fun <T> doSomething(a: T) {}
fun test(n: Int): String {
var res: String
if (3 > 2) {
<caret>when (n) {
1 -> {
doSomething("***")
res = "one"
}
else -> {
doSomething("***")
res = "two"
}
}
} else {
doSomething("***")
res = "???"
}
return res
}
@@ -0,0 +1,23 @@
fun <T> doSomething(a: T) {}
fun test(n: Int): String {
var res: String
if (3 > 2) {
<caret>res = when (n) {
1 -> {
doSomething("***")
"one"
}
else -> {
doSomething("***")
"two"
}
}
} else {
doSomething("***")
res = "???"
}
return res
}
@@ -0,0 +1,13 @@
fun foo(): Int {
var res = 0
loop@ while (true) {
<caret>when (1) {
1 -> res += 1
2 -> throw Exception()
3 -> break@loop
4 -> continue@loop
else -> return -1
}
}
return res
}
@@ -0,0 +1,13 @@
fun foo(): Int {
var res = 0
loop@ while (true) {
res += when (1) {
1 -> 1
2 -> throw Exception()
3 -> break@loop
4 -> continue@loop
else -> return -1
}
}
return res
}
@@ -0,0 +1,10 @@
fun test(n: Int): String {
var res: String
<caret>when (n) {
1 -> res = "one"
else -> res = "two"
}
return res
}
@@ -0,0 +1,10 @@
fun test(n: Int): String {
var res: String
<caret>res = when (n) {
1 -> "one"
else -> "two"
}
return res
}
@@ -0,0 +1,18 @@
fun <T> doSomething(a: T) {}
fun test(n: Int): String {
var res: String
<caret>when (n) {
1 -> {
doSomething("***")
res = "one"
}
else -> {
doSomething("***")
res = "two"
}
}
return res
}
@@ -0,0 +1,18 @@
fun <T> doSomething(a: T) {}
fun test(n: Int): String {
var res: String
<caret>res = when (n) {
1 -> {
doSomething("***")
"one"
}
else -> {
doSomething("***")
"two"
}
}
return res
}
@@ -0,0 +1,21 @@
// PROBLEM: none
fun <T> doSomething(a: T) {}
fun test(n: Int): String {
var res: String = ""
<caret>when (n) {
1 -> {
doSomething("***")
res = "one"
}
else -> {
var res: String
res = "two"
doSomething("***")
}
}
return res
}
@@ -0,0 +1,20 @@
// PROBLEM: none
fun <T> doSomething(a: T) {}
fun test(n: Int): String {
var res: String = ""
var res2: String = ""
<caret>when (n) {
1 -> {
doSomething("***")
res = "one"
}
else -> {
doSomething("***")
res2 = "two"
}
}
return res + res2
}
@@ -0,0 +1,19 @@
// PROBLEM: none
fun <T> doSomething(a: T) {}
fun test(n: Int): String {
var res: String
<caret>when (n) {
1 -> {
doSomething("***")
res = "one"
}
else -> {
res = "two"
doSomething("***")
}
}
return res
}