Refactoring: "introduce when subject" is now an inspection

This commit is contained in:
Mikhail Glukhikh
2017-12-19 16:58:04 +03:00
parent a8b01a6b00
commit 6d4b5bc48f
29 changed files with 136 additions and 151 deletions
@@ -0,0 +1 @@
org.jetbrains.kotlin.idea.inspections.branchedTransformations.IntroduceWhenSubjectInspection
@@ -0,0 +1,13 @@
class Klass<T>
fun test(obj: Any): String {
return <caret>when {
obj is String -> "string" // return "string"
// it's an Int
obj is Int -> "int"
// otherwise
else -> "unknown"
}
}
@@ -0,0 +1,13 @@
class Klass<T>
fun test(obj: Any): String {
return when (obj) {
is String -> "string" // return "string"
// it's an Int
is Int -> "int"
// otherwise
else -> "unknown"
}
}
@@ -0,0 +1,8 @@
fun test(n: Int): String {
return <caret>when {
n == 0 -> "zero"
n == 1 -> "one"
n == 2 -> "two"
else -> "unknown"
}
}
@@ -0,0 +1,8 @@
fun test(n: Int): String {
return <caret>when (n) {
0 -> "zero"
1 -> "one"
2 -> "two"
else -> "unknown"
}
}
@@ -0,0 +1,13 @@
fun test(n: Int): String {
return <caret>when {
n !is Int -> "???"
n in 0..10 -> "small"
n in 10..100 -> "average"
n in 100..1000 -> "big"
n == 1000000 -> "million"
2000000 == n -> "two millions"
n !in -100..-10 -> "good"
n is Int -> "unknown"
else -> "unknown"
}
}
@@ -0,0 +1,13 @@
fun test(n: Int): String {
return <caret>when (n) {
!is Int -> "???"
in 0..10 -> "small"
in 10..100 -> "average"
in 100..1000 -> "big"
1000000 -> "million"
2000000 -> "two millions"
!in -100..-10 -> "good"
is Int -> "unknown"
else -> "unknown"
}
}
@@ -0,0 +1,8 @@
fun test(obj: Any): String {
return <caret>when {
obj !is Iterable<*> -> "not iterable"
obj !is Collection<*> -> "not collection"
obj !is MutableCollection<*> -> "not mutable collection"
else -> "unknown"
}
}
@@ -0,0 +1,8 @@
fun test(obj: Any): String {
return <caret>when (obj) {
!is Iterable<*> -> "not iterable"
!is Collection<*> -> "not collection"
!is MutableCollection<*> -> "not mutable collection"
else -> "unknown"
}
}
@@ -0,0 +1,8 @@
fun test(n: Int): String {
return <caret>when {
n !in 0..1000 -> "unknown"
n !in 0..100 -> "big"
n !in 0..10 -> "average"
else -> "small"
}
}
@@ -0,0 +1,8 @@
fun test(n: Int): String {
return <caret>when (n) {
!in 0..1000 -> "unknown"
!in 0..100 -> "big"
!in 0..10 -> "average"
else -> "small"
}
}
@@ -0,0 +1,9 @@
// PROBLEM: none
fun test(n: Int): String {
return <caret>when {
n in 0..10 -> "small"
n >= 10 && n <= 100 -> "average"
n < 0 || n > 1000 -> "unknown"
else -> "big"
}
}
@@ -0,0 +1,10 @@
class Klass<T>
fun test(obj: Any): String {
return <caret>when {
obj is String -> "string"
obj is Int -> "int"
obj is Klass<*> -> "class"
else -> "unknown"
}
}
@@ -0,0 +1,10 @@
class Klass<T>
fun test(obj: Any): String {
return <caret>when (obj) {
is String -> "string"
is Int -> "int"
is Klass<*> -> "class"
else -> "unknown"
}
}
@@ -0,0 +1,8 @@
fun test(n: Int): String {
return <caret>when {
n in 0..10 -> "small"
n in 10..100 -> "average"
n in 100..1000 -> "big"
else -> "unknown"
}
}
@@ -0,0 +1,8 @@
fun test(n: Int): String {
return <caret>when (n) {
in 0..10 -> "small"
in 10..100 -> "average"
in 100..1000 -> "big"
else -> "unknown"
}
}
@@ -0,0 +1,9 @@
// PROBLEM: none
fun test(n: Int): String {
return <caret>when(n) {
in 0..10 -> "small"
in 10..100 -> "average"
in 100..1000 -> "big"
else -> "unknown"
}
}
@@ -0,0 +1,8 @@
fun test(n: Int): String {
return <caret>when {
n == 0 -> "zero"
1 == n -> "one"
n == 2 -> "two"
else -> "unknown"
}
}
@@ -0,0 +1,8 @@
fun test(n: Int): String {
return <caret>when (n) {
0 -> "zero"
1 -> "one"
2 -> "two"
else -> "unknown"
}
}
@@ -0,0 +1,9 @@
// PROBLEM: none
fun test(n: Int): String {
return <caret>when {
n in 0..10 -> "n is small"
n/10 in 0..10 -> "m is average"
n/100 in 0..10 -> "n is big"
else -> "unknown"
}
}